浏览代码

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

nieqiurong 1 年之前
父节点
当前提交
73622a1593

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

@@ -317,7 +317,7 @@ public interface BaseMapper<T> extends Mapper<T> {
      *
      *
      * @param queryWrapper 实体对象封装操作类(可以为 null)
      * @param queryWrapper 实体对象封装操作类(可以为 null)
      */
      */
-    List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
+    <E> List<E> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
 
 
     /**
     /**
      * 根据 Wrapper 条件,查询全部记录
      * 根据 Wrapper 条件,查询全部记录
@@ -327,7 +327,7 @@ public interface BaseMapper<T> extends Mapper<T> {
      * @param resultHandler 结果处理器 {@link ResultHandler}
      * @param resultHandler 结果处理器 {@link ResultHandler}
      * @since 3.5.4
      * @since 3.5.4
      */
      */
-    void selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<Object> resultHandler);
+    <E> void selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper, ResultHandler<E> resultHandler);
 
 
     /**
     /**
      * 根据 entity 条件,查询全部记录(并翻页)
      * 根据 entity 条件,查询全部记录(并翻页)

+ 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}
      * @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}
      * @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));
         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)
             .orderByDesc(H2User::getDeleted, H2User::getPrice).orderByDesc(true, H2User::getDeleted, H2User::getTestType)
             .groupBy(H2User::getAge, H2User::getTestType).groupBy(true, H2User::getAge, 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);
+        }
+    }
+
 }
 }