Browse Source

精简 mapper 方法注入,优化 selectOne 查询方式

hubin 4 years ago
parent
commit
3f814124e3

+ 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 SelectById(),
             new SelectBatchByIds(),
             new SelectBatchByIds(),
             new SelectByMap(),
             new SelectByMap(),
-            new SelectOne(),
             new SelectCount(),
             new SelectCount(),
             new SelectMaps(),
             new SelectMaps(),
             new SelectMapsPage(),
             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;
 import org.apache.ibatis.mapping.SqlSource;
 
 
 /**
 /**
- * 查询满足条件一条数据
+ * 查询满足条件一条数据,为了精简注入方法,该方法采用 list.get(0) 处理后续不再使用
  *
  *
  * @author hubin
  * @author hubin
  * @since 2018-04-06
  * @since 2018-04-06
  */
  */
+@Deprecated
 public class SelectOne extends AbstractMethod {
 public class SelectOne extends AbstractMethod {
 
 
     @Override
     @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.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -155,10 +156,18 @@ public interface BaseMapper<T> extends Mapper<T> {
 
 
     /**
     /**
      * 根据 entity 条件,查询一条记录
      * 根据 entity 条件,查询一条记录
+     * <p>请自行保存只能查询一条记录,例如 qw.last("limit 1") 限制取一条记录</p>
      *
      *
      * @param queryWrapper 实体对象封装操作类(可以为 null)
      * @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 条件,查询总记录数
      * 根据 Wrapper 条件,查询总记录数