0
点赞
收藏
分享

微信扫一扫

再见MyBatis-Plus,推荐一个优雅的 MyBatis 增强框架

Mybatis 是一个优秀的 ORM 框架,本身功能比较少,为了提高开发效率,出现了一些 Mybatis 增强框架,大家比较熟悉的是 MyBatis-Plus。今天给大家推荐一个轻量的 Mybatis 增强框架 -- MyBatis-Flex。

项目特征

  • 轻量,框架只依赖 Mybatis 再无其他第三方依赖
  • 只增强,支持 Entity 的增删改查及分页查询
  • 内置 Db + Row 工具,可以无需实体类进行增删改查
  • 几乎支持市面上所有的数据库,还可以通过方言持续扩展
  • 支持多(联合)主键,以及不同的主键内容生成策略
  • 支持逻辑删除设置、更新或插入的默认值配置
  • 支持数据脱敏和字段脱敏
  • 支持字典回写,将数据库中的枚举值转换为页面显示的名称
  • 支持多租户
  • MyBatis-Flex 速度大概是 MyBatis-Plus 的 5 ~ 10+ 倍

使用案例

定义mapper

public interface UserMapper extends BaseMapper<User> {

}

//普通查询
QueryWrapper queryWrapper = QueryWrapper.create()
                .select()
                .where(User.AGE.eq(18));
Account account = userMapper.selectOneByQuery(queryWrapper);

在数据量大的情况使用游标查询

Db.tx(() -> {
    Cursor<User> userList = userMapper.selectCursorByQuery(query);
    for (User user : userList) {
        //todo 业务处理
    }
    return true;
});

在每次for循环时候才去查询数据,不是一次性把数据都读出来,适合批量处理数据的场景,比如对账、加载到缓存,导出数据等等。

数据缓存

在 Spring Boot 配置类上启用 Spring Cache 缓存

@EnableCaching
@Configuration
public class CacheConfig {
}

ServiceImpl继承 CacheableServiceImpl 实现类

@Service
@CacheConfig(cacheNames = "user")
public class UserServiceImpl extends CacheableServiceImpl<UserMapper, Account> implements UserService {
    // 根据主键缓存数据
    @Override
    @Cacheable(key = "#id")
    public User getById(Serializable id) {
        return super.getById(id);
    }

    // 根据方法名加查询 SQL 语句缓存结果数据
    // 加上方法名是为了避免不同的方法使用一样的 QueryWrapper
    @Override
    @Cacheable(key = "#root.methodName + ':' + #query.toSQL()")
    public List<User> list(QueryWrapper query) {
        return super.list(query);
    }
}

其他增删改查方法可以参考官方文档。

举报

相关推荐

0 条评论