فهرست منبع

!165 精简 mapper 方法注入,优化 selectOne 查询方式
Merge pull request !165 from 青苗/3.0

青苗 4 سال پیش
والد
کامیت
6e27acbdd4

+ 1 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlMethod.java

@@ -61,6 +61,7 @@ public enum SqlMethod {
     SELECT_BY_ID("selectById", "根据ID 查询一条数据", "SELECT %s FROM %s WHERE %s=#{%s} %s"),
     SELECT_BY_MAP("selectByMap", "根据columnMap 查询一条数据", "<script>SELECT %s FROM %s %s\n</script>"),
     SELECT_BATCH_BY_IDS("selectBatchIds", "根据ID集合,批量查询数据", "<script>SELECT %s FROM %s WHERE %s IN (%s) %s </script>"),
+    @Deprecated
     SELECT_ONE("selectOne", "查询满足条件一条数据", "<script>%s SELECT %s FROM %s %s %s\n</script>"),
     SELECT_COUNT("selectCount", "查询满足条件总记录数", "<script>%s SELECT COUNT(%s) FROM %s %s %s\n</script>"),
     SELECT_LIST("selectList", "查询满足条件所有数据", "<script>%s SELECT %s FROM %s %s %s %s\n</script>"),

+ 0 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/DefaultSqlInjector.java

@@ -43,7 +43,6 @@ public class DefaultSqlInjector extends AbstractSqlInjector {
             new SelectById(),
             new SelectBatchByIds(),
             new SelectByMap(),
-            new SelectOne(),
             new SelectCount(),
             new SelectMaps(),
             new SelectMapsPage(),

+ 2 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/SelectOne.java

@@ -22,11 +22,12 @@ import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.mapping.SqlSource;
 
 /**
- * 查询满足条件一条数据
+ * 查询满足条件一条数据,为了精简注入方法,该方法采用 list.get(0) 处理后续不再使用
  *
  * @author hubin
  * @since 2018-04-06
  */
+@Deprecated
 public class SelectOne extends AbstractMethod {
 
     @Override

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

@@ -17,6 +17,7 @@ package com.baomidou.mybatisplus.core.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Param;
 
@@ -155,10 +156,18 @@ public interface BaseMapper<T> extends Mapper<T> {
 
     /**
      * 根据 entity 条件,查询一条记录
+     * <p>请自行保存只能查询一条记录,例如 qw.last("limit 1") 限制取一条记录</p>
      *
      * @param queryWrapper 实体对象封装操作类(可以为 null)
      */
-    T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
+    default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {
+        List<T> ts = this.selectList(queryWrapper);
+        if (CollectionUtils.isNotEmpty(ts)) {
+            System.err.println("One record is expected, but the query result is multiple records");
+            return ts.get(0);
+        }
+        return null;
+    }
 
     /**
      * 根据 Wrapper 条件,查询总记录数