MybatisPlus 发布 3.5.4 版本、新增流式查询,更多细节优化

Mybatis-Plus 是一款 MyBatis 的增强工具包,简化 CRUD 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入动态 SQL 脚本、性能更优,让你专注业务快速敏捷开发。  

演示例子:https://gitee.com/baomidou/mybatis-plus-samples

官方文档:https://baomidou.com/

升级日志

  • fix: 修复Insert无字段时执行SQL报错.

  • fix: 修复高版本JDK下lambda无法执行IDEA调试.

  • fix: 修复LambdaQuery中select,groupBy,orderBy,orderByAsc,orderByDesc提示的警告,新增对应doXxx方法支持重写(不兼容改动,api方法做了final处理).

  • fix: 修复inject-sql-session-on-mapper-scan无配置提示.

  • fix: 修复@OrderBy搭配@TableId排序字段错误(不兼容改动,com.baomidou.mybatisplus.core.metadata.TableInfo.orderByFields调整了类型).

  • fix: 修复Service中根据主键逻辑删除时类型不匹配导致的错误.

  • fix: 修复分页插件Count与自定义ResultHandler冲突.

  • fix: 修复字段填充处理器可能会出现重入问题

  • feat: 新增自增主键字段是否允许插入控制,可使用方法注入覆盖Insert(boolean ignoreAutoIncrementColumn)或Insert(String name, boolean ignoreAutoIncrementColumn)控制自增主键是否支持写入行为.

  • feat: ActiveRecord模式下deleteById(逻辑删除)方法支持自动填充功能.

  • feat: 内置泛型提取,支持非Spring体系项目使用.

  • feat: BaseMapper新增update(wrapper)更新方法.

  • feat: BaseMapper新增流式查询方法对大数据查询支持.

  • feat: 代码生成器元数据信息公开tableName与columnName字段访问.

  • feat: 新增mybatis-plus-spring-boot3-starter与mybatis-plus-spring-boot3-starter-test支持SpringBoot3.

  • feat: 支持插件缺省注入,当无MybatisPlusInterceptor注入时,支持com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor自动注入.

  • feat: 升级源码Jdk开发版本至Java21.

  • feat: 升级gradle-wrapper至8.4-rc-1.

  • feat: 升级kotlin-gradle-plugin至1.9.20-Beta.

  • feat: 升级SpringBoot2.x版本至2.7.15.

  • feat: 升级lombok至1.18.30.

  • opt: mybatis-plus-extension中mybatis-spring依赖修改为可选依赖(不兼容改动,如果项目在非spring或非springBoot下使用到了请手动添加依赖).

  • opt: spring-boot-starter减少无用的配置提示(不兼容改动,调整了com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.configuration类型).

  • opt: 字段填充处理器提取去除固定参数提取,支持更宽松的mapper方法参数提取填充处理,

  • opt: 去除com.baomidou.mybatisplus.core.toolkit.ReflectionKit.setAccessible方法调用,防止高版本Jdk移除

  • opt: 调整selectOne方法(配合流式处理,最多提取两行数据,日志不再打印总记录数).

  • opt: 优化selectObjs方法返回值,减少类型强制转换.

  • opt: 通用Service支持多SqlSessionFactory注入.

  • opt: 优化TableInfo.newInstance创建实例方法.

  • opt: 去除多余的@SuppressWarnings("serial")

特别注意!  新版本 Springboot 3.X 使用 mybatis-plus-spring-boot3-starter 依赖启动  2.X 依赖保持不变

Spring Boot 3.X 依赖

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  <version>3.5.4</version>
</dependency>

Spring Boot 2.X 依赖 

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.4</version>
</dependency>
  • 新增自增主键字段是否允许插入控制,可使用方法注入覆盖Insert(boolean ignoreAutoIncrementColumn)或Insert(String name, boolean ignoreAutoIncrementColumn)控制自增主键是否支持写入行为.

  • 内置泛型提取,支持非Spring体系项目使用.

  • BaseMapper新增update(wrapper)更新方法.

  • BaseMapper新增流式查询方法对大数据查询支持.

    void selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList, ResultHandler<T> resultHandler);
    
    void selectByMap(Map<String, Object> columnMap, ResultHandler<T> resultHandler);
    
    void selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<T> resultHandler);
    
    void selectList(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<T> resultHandler);
    
    void selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler);
    
    void selectMaps(IPage<? extends Map<String, Object>> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler);
    
    void selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<E> resultHandler);
    
    //使用示例
    
    baseMapper.selectList(page, Wrappers.emptyWrapper(), resultContext -> System.out.println(resultContext.getResultObject()));
    
    
  • 新增批量操作处理方法

    MybatisBatch.Method<H2User> mapperMethod = new MybatisBatch.Method<>(H2UserMapper.class);
    
    List<BatchResult> batchResults = MybatisBatchUtils.execute(sqlSessionFactory, h2UserList, mapperMethod.insert());
    
    
  • 代码生成器元数据信息公开tableName与columnName字段访问.

  • 新增mybatis-plus-spring-boot3-starter与mybatis-plus-spring-boot3-starter-test支持SpringBoot3.

  • 支持插件缺省注入,当无MybatisPlusInterceptor注入时,支持com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor自动注入.

  • 升级源码Jdk开发版本至Java21.

  • 升级gradle-wrapper至8.4-rc-1.

  • 升级kotlin-gradle-plugin至1.9.20-Beta.

  • 升级SpringBoot2.x版本至2.7.15.

  • 升级lombok至1.18.30.

优化

  • mybatis-plus-extension中mybatis-spring依赖修改为可选依赖

  • spring-boot-starter减少无用的配置提示

  • 字段填充处理器提取去除固定参数提取,支持更宽松的mapper方法参数提取填充处理

    void testMyMethod1(@Param("coll") List<User> userList);
    
    void testMyMethod2(@Param("list") List<User> userList);
    
    void testMyMethod3(@Param("collection") List<User> userList);
    
    void testMyMethod4(List<User> userList);
    
    // 新版本开始支持,还可以有多参数.
    
    void testMyMethod5(@Param("userList") List<User> userList);
    
    
  • 去除com.baomidou.mybatisplus.core.toolkit.ReflectionKit.setAccessible方法调用,防止高版本Jdk移除

  • 调整selectOne方法(配合流式处理,最多提取两行数据,日志不再打印总记录数).

  • 优化selectObjs方法返回值,减少类型强制转换.

  • ActiveRecord模式下deleteById(逻辑删除)方法支持自动填充功能.

修复

  • 修复Insert无字段时执行SQL报错.

  • 修复高版本JDK下lambda无法执行IDEA调试.

  • 修复LambdaQuery中select,groupBy,orderBy,orderByAsc,orderByDesc提示的警告,新增对应doXxx方法支持重写.

  • 修复inject-sql-session-on-mapper-scan无配置提示.

  • 修复@OrderBy搭配@TableId排序字段错误.

  • 修复Service中根据主键逻辑删除时类型不匹配导致的错误.

  • 修复分页插件Count与自定义ResultHandler冲突.

  • 修复字段填充处理器可能会出现重入问题

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/262948/mybatisplus-3-5-4-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。