Caratacus 8 år sedan
förälder
incheckning
147c1e9d76

+ 1 - 14
mybatis-plus/src/main/java/com/baomidou/mybatisplus/activerecord/Model.java

@@ -22,10 +22,7 @@ import com.baomidou.mybatisplus.mapper.SqlHelper;
 import com.baomidou.mybatisplus.mapper.SqlRunner;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.toolkit.StringUtils;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
 import org.apache.ibatis.session.SqlSession;
 
 import java.io.Serializable;
@@ -45,8 +42,6 @@ import java.util.Map;
 @SuppressWarnings({ "serial", "rawtypes" })
 public abstract class Model<T extends Model> implements Serializable {
 
-	private static final Log logger = LogFactory.getLog(Model.class);
-
 	/**
 	 * <p>
 	 * 插入
@@ -250,15 +245,7 @@ public abstract class Model<T extends Model> implements Serializable {
 	 * @return
 	 */
 	public T selectOne(Wrapper wrapper) {
-		List<T> list = selectList(wrapper);
-		if (CollectionUtils.isNotEmpty(list)) {
-			int size = list.size();
-			if (size > 1) {
-				logger.warn(String.format("Warn: selectOne Method There are  %s results.", size));
-			}
-			return list.get(0);
-		}
-		return null;
+		return SqlHelper.getObject(selectList(wrapper));
 	}
 
 	/**

+ 29 - 3
mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/SqlHelper.java

@@ -15,13 +15,17 @@
  */
 package com.baomidou.mybatisplus.mapper;
 
-import org.apache.ibatis.session.ExecutorType;
-import org.apache.ibatis.session.SqlSession;
-
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
 import com.baomidou.mybatisplus.entity.TableInfo;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+
+import java.util.List;
 
 /**
  * <p>
@@ -33,6 +37,8 @@ import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
  */
 public class SqlHelper {
 
+	private static final Log logger = LogFactory.getLog(SqlHelper.class);
+
 	/**
 	 * 获取Session 默认自动提交
 	 * <p>
@@ -114,4 +120,24 @@ public class SqlHelper {
 		return (null == result) ? 0 : result;
 	}
 
+	/**
+	 * <p>
+	 * 从list中取第一条数据返回对应List中泛型的单个结果
+	 * </p>
+	 * 
+	 * @param list
+	 * @param <E>
+	 * @return
+	 */
+	public static <E> E getObject(List<E> list) {
+		if (CollectionUtils.isNotEmpty(list)) {
+			int size = list.size();
+			if (size > 1) {
+				logger.warn(String.format("Warn: execute Method There are  %s results.", size));
+			}
+			return list.get(0);
+		}
+		return null;
+	}
+
 }

+ 1 - 14
mybatis-plus/src/main/java/com/baomidou/mybatisplus/mapper/SqlRunner.java

@@ -18,14 +18,10 @@ package com.baomidou.mybatisplus.mapper;
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
 import com.baomidou.mybatisplus.entity.TableInfo;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.toolkit.StringUtils;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,7 +36,6 @@ import java.util.Map;
  */
 public class SqlRunner {
 
-	private static final Log logger = LogFactory.getLog(SqlRunner.class);
 	// 默认FACTORY
 	public static SqlSessionFactory FACTORY;
 	public static final String INSERT = "com.baomidou.mybatisplus.mapper.SqlRunner.Insert";
@@ -99,15 +94,7 @@ public class SqlRunner {
 	}
 
 	public Map<String, Object> selectOne(String sql, Object... args) {
-		List<Map<String, Object>> list = selectList(sql, args);
-		if (CollectionUtils.isNotEmpty(list)) {
-			int size = list.size();
-			if (size > 1) {
-				logger.warn(String.format("Warn: selectOne Method There are  %s results.", size));
-			}
-			return list.get(0);
-		}
-		return Collections.emptyMap();
+		return SqlHelper.getObject(selectList(sql, args));
 	}
 
 	public Page<Map<String, Object>> selectPage(Page page, String sql, Object... args) {

+ 11 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/service/IService.java

@@ -236,6 +236,17 @@ public interface IService<T> {
 	 */
 	Map<String, Object> selectMap(Wrapper<T> wrapper);
 
+	/**
+	 * <p>
+	 * 根据 Wrapper,查询一条记录
+	 * </p>
+	 *
+	 * @param wrapper
+	 *            {@link Wrapper}
+	 * @return Object
+	 */
+	Object selectObj(Wrapper<T> wrapper);
+
 	/**
 	 * <p>
 	 * 根据 Wrapper 条件,查询总记录数

+ 6 - 18
mybatis-plus/src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java

@@ -241,27 +241,15 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
 	}
 
 	public T selectOne(Wrapper<T> wrapper) {
-		List<T> list = baseMapper.selectList(wrapper);
-		if (CollectionUtils.isNotEmpty(list)) {
-			int size = list.size();
-			if (size > 1) {
-				logger.warn(String.format("Warn: selectOne Method There are  %s results.", size));
-			}
-			return list.get(0);
-		}
-		return null;
+		return SqlHelper.getObject(baseMapper.selectList(wrapper));
 	}
 
 	public Map<String, Object> selectMap(Wrapper<T> wrapper) {
-		List<Map<String, Object>> list = baseMapper.selectMaps(wrapper);
-		if (CollectionUtils.isNotEmpty(list)) {
-			int size = list.size();
-			if (size > 1) {
-				logger.warn(String.format("Warn: selectMap Method There are  %s results.", size));
-			}
-			return list.get(0);
-		}
-		return null;
+		return SqlHelper.getObject(baseMapper.selectMaps(wrapper));
+	}
+
+	public Object selectObj(Wrapper<T> wrapper) {
+		return SqlHelper.getObject(baseMapper.selectObjs(wrapper));
 	}
 
 	public int selectCount(Wrapper<T> wrapper) {