ソースを参照

Merge branch 'github3.0' into 3.0

hubin 1 年間 前
コミット
f2f6f36a6a

+ 11 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java

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

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/PaginationInnerInterceptor.java

@@ -115,7 +115,7 @@ public class PaginationInnerInterceptor implements InnerInterceptor {
     @Override
     public boolean willDoQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
         IPage<?> page = ParameterUtils.findPage(parameter).orElse(null);
-        if (page == null || page.getSize() < 0 || !page.searchCount()) {
+        if (page == null || page.getSize() < 0 || !page.searchCount() || resultHandler != Executor.NO_RESULT_HANDLER) {
             return true;
         }
 

+ 4 - 4
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/IService.java

@@ -503,8 +503,8 @@ public interface IService<T> {
     /**
      * 查询全部记录
      */
-    default List<Object> listObjs() {
-        return listObjs(Function.identity());
+    default <E> List<E> listObjs() {
+        return getBaseMapper().selectObjs(null);
     }
 
     /**
@@ -521,8 +521,8 @@ public interface IService<T> {
      *
      * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
      */
-    default List<Object> listObjs(Wrapper<T> queryWrapper) {
-        return listObjs(queryWrapper, Function.identity());
+    default <E> List<E> listObjs(Wrapper<T> queryWrapper) {
+        return getBaseMapper().selectObjs(queryWrapper);
     }
 
     /**

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/Db.java

@@ -515,7 +515,7 @@ public class Db {
      *
      * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
      */
-    public static <T> List<Object> listObjs(AbstractWrapper<T, ?, ?> queryWrapper) {
+    public static <E, T> List<E> listObjs(AbstractWrapper<T, ?, ?> queryWrapper) {
         return SqlHelper.execute(getEntityClass(queryWrapper), baseMapper -> baseMapper.selectObjs(queryWrapper));
     }
 

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

@@ -881,4 +881,15 @@ class H2UserTest extends BaseTest {
             .orderByDesc(H2User::getDeleted, H2User::getPrice).orderByDesc(true, H2User::getDeleted, H2User::getTestType)
             .groupBy(H2User::getAge, H2User::getTestType).groupBy(true, H2User::getAge, H2User::getTestType);
     }
+
+    @Test
+    void testSelectObjs() {
+        for (Object o : userService.listObjs()) {
+            Assertions.assertEquals(o.getClass(), Long.class);
+        }
+        for (Long id : userService.<Long>listObjs()) {
+            System.out.println(id);
+        }
+    }
+
 }