MybatisPlus 發布 3.5.4 版本、新增流式查詢,更多細節優化

來源: 投稿
作者: 青苗
2023-10-23 08:45:00

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沖突.

  • 修復字段填充處理器可能會出現重入問題

展開閱讀全文
點擊加入討論??(2) 發布并加入討論??
2 評論
1 收藏
分享
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间