Quellcode durchsuchen

调整selectMaps方法.

nieqiurong vor 1 Jahr
Ursprung
Commit
24d2cf6c1d

+ 10 - 8
changelog-temp.md

@@ -3,18 +3,20 @@
 * 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: 修复Service中根据主键逻辑删除时类型不匹配导致的错误.
+* fix: 修复分页插件Count与自定义ResultHandler冲突.
 * feat: 新增自增主键字段是否允许插入控制,可使用方法注入覆盖Insert(boolean ignoreAutoIncrementColumn)或Insert(String name, boolean ignoreAutoIncrementColumn)控制自增主键是否支持自定义写入行为.
 * feat: ActiveRecord模式下deleteById(逻辑删除)方法支持自动填充功能.
 * feat: 代码生成器元数据信息公开tableName与columnName字段访问.
-* feat: 新增mybatis-plus-spring-boot3-starter与mybatis-plus-spring-boot3-starter-test支持SpringBoot3
+* 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下使用到了请手动添加依赖)
+* 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.
+* feat: BaseMapper新增流式查询方法对大数据查询支持.
+* opt: mybatis-plus-extension中mybatis-spring依赖修改为可选依赖(不兼容改动,如果项目在非spring或非springBoot下使用到了请手动添加依赖).
 * opt: spring-boot-starter减少无用的配置提示(不兼容改动,调整了com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.configuration类型).
 *
 

+ 2 - 12
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java

@@ -290,7 +290,7 @@ public interface BaseMapper<T> extends Mapper<T> {
      * @param resultHandler 结果处理器 {@link ResultHandler}
      * @since 3.5.4
      */
-    void selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<T> resultHandler);
+    void selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler);
 
     /**
      * 根据 Wrapper 条件,查询全部记录(并翻页)
@@ -309,7 +309,7 @@ public interface BaseMapper<T> extends Mapper<T> {
      * @param resultHandler 结果处理器 {@link ResultHandler}
      * @since 3.5.4
      */
-    void selectMaps(IPage<? extends Map<String, Object>> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<T> resultHandler);
+    void selectMaps(IPage<? extends Map<String, Object>> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Map<String, Object>> resultHandler);
 
     /**
      * 根据 Wrapper 条件,查询全部记录
@@ -329,16 +329,6 @@ public interface BaseMapper<T> extends Mapper<T> {
      */
     <E> void selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<E> resultHandler);
 
-    /**
-     * 根据 Wrapper 条件,查询全部记录
-     * <p>注意: 只返回第一个字段的值</p>
-     *
-     * @param queryWrapper  实体对象封装操作类(可以为 null)
-     * @param resultHandler 结果处理器 {@link ResultHandler}
-     * @since 3.5.4
-     */
-    void selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Object> resultHandler);
-
     /**
      * 根据 entity 条件,查询全部记录(并翻页)
      *

+ 29 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserTest.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -38,6 +39,7 @@ import net.sf.jsqlparser.statement.select.Select;
 import org.apache.ibatis.exceptions.TooManyResultsException;
 import org.apache.ibatis.plugin.Interceptor;
 import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
 import org.junit.jupiter.api.*;
@@ -892,4 +894,31 @@ class H2UserTest extends BaseTest {
         }
     }
 
+    @Test
+    void testResultSet() {
+        BaseMapper<H2User> baseMapper = userService.getBaseMapper();
+        Page<H2User> page = new Page<>(1, 1000000);
+        System.out.println("--------------------------------------------");
+        baseMapper.selectList(page, Wrappers.emptyWrapper());
+        List<Long> ids = new ArrayList<>();
+        System.out.println("---------------selectListByPage-------------------");
+        baseMapper.selectList(page, Wrappers.emptyWrapper(), resultContext -> {
+            H2User resultObject = resultContext.getResultObject();
+            ids.add(resultObject.getTestId());
+            System.out.println(resultObject);
+        });
+        System.out.println("---------------selectBatchIds-------------------");
+        baseMapper.selectBatchIds(ids, resultContext -> System.out.println(resultContext.getResultObject()));
+        System.out.println("---------------selectList-------------------");
+        baseMapper.selectList(Wrappers.emptyWrapper(), resultContext -> System.out.println(resultContext.getResultObject()));
+        System.out.println("---------------selectObjs-------------------");
+        baseMapper.selectObjs(Wrappers.emptyWrapper(), (ResultHandler<Long>) resultContext -> System.out.println(resultContext.getResultObject()));
+        System.out.println("---------------selectByMap-------------------");
+        baseMapper.selectByMap(new HashMap<>(), resultContext -> System.out.println(resultContext.getResultObject()));
+        System.out.println("---------------selectMapsByPage-------------------");
+        baseMapper.selectMaps(Page.of(1, 100000), Wrappers.emptyWrapper(), resultContext -> resultContext.getResultObject().forEach((k, v) -> System.out.println(k + "--------" + v)));
+        System.out.println("---------------selectMaps-------------------");
+        baseMapper.selectMaps(Wrappers.emptyWrapper(), resultContext -> resultContext.getResultObject().forEach((k, v) -> System.out.println(k + "--------" + v)));
+    }
+
 }