首页 > 其他分享 >再见MyBatis-Plus,推荐一个优雅的 MyBatis 增强框架

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

时间:2023-08-16 10:01:04浏览次数:40  
标签:QueryWrapper 缓存 优雅 Mybatis Plus MyBatis query public

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);
    }
}

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

标签:QueryWrapper,缓存,优雅,Mybatis,Plus,MyBatis,query,public
From: https://blog.51cto.com/u_16115561/7098986

相关文章

  • TienChin 引入 MyBatisPlus
    在父工程当中添加版本号,统一管理:<mybatis-plus.version>3.5.1</mybatis-plus.version>在父工程当中添加MyBatisPlus依赖:<!--MyBatisPlus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</art......
  • mybatis系列: 简介以及使用
    目录一、简介二、简单使用一、简介MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD。MyBatis在三层架构中负责持久层的,属于持久层框架。MyBatis的发展历程:【引用百度百科】MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了go......
  • orange pi 5 plus开发板使用
    系统镜像烧写参考网址:http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_5_Plus烧写方法:使用RKDevTool烧录Linux镜像到eMMC中的方法烧写镜像:选择Orangepi5plus_1.0.6_ubuntu_jammy_desktop_gnome_linux5.10.110.img驱动:DriverAssitant_v5.12烧写工具:RKDe......
  • 若依-Vue 单体版本 更换mybatisPlus
    1、单体模块在pom.xml;多模块版本在ruoyi-common\pom.xml、模块添加整合依赖<!--mybatis-plus增强CRUD--><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version>......
  • SpringBoot3 学习笔记 (整合Mybatis-plus)
    1、引入依赖,网址:https://mvnrepository.com/artifact/com.baomidou 找到mybatis-plus-boot-starter这里最新版本为3.5.3.2,点击进去2、在pom.xml中添加依赖,并确认依赖中已经有了mysql-connector-j的依赖<!--https://mvnrepository.com/artifact/com.baomidou/mybatis-pl......
  • Mybatis中的resultType和resultMap
    综述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接返回设置的类型,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面......
  • 如何优雅的对input框数据进行动态脱敏
    说在前面......
  • MyBatis处理SQL字段类型date与datetime
    1、MyBatis中jdbcType简介MyBatis处理日期有两种的jdbcType,如下所示:(1)jdbcType=DATE(2)jdbcType=TIMESTAMP注意:此时的DATE指的是java.sql.Date,不是java.util.Date,要注意两者的区别。java.util.Date通常情况下用它获取当前时间,java.sql.Date是针对SQL语句使用的,它只包含日期而没有......
  • Mybatis框架
    Mybatis框架用处:1.持久层框架,可以避免几乎所有的jdbc和手动设置参数以及获取结果集,2013年迁移至github。数据持久化:持久化就是将程序的数据在持久层状态和瞬时状态转化过程内存:断电即失数据库(jdbc),io文件持久化生活:冷藏,罐头为什么要持久化:有一些对象,不能让他丢掉内......
  • Mybatis Interceptor 经典场景
    1.MybatisInterceptor的应用场景很多,比如sql语句动态生成,resultMap动态生成下面就用代码来分析下resultMap动态生成吧,这个是ORM框架常用的功能哦1packagecom.xx.transjob.common.db;23importcom.baomidou.mybatisplus.annotation.TableName;4importorg.apache.......