package com.agentdriving.user.core.db;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.agentdriving.user.core.util.SpringContextHolder;
import java.util.HashMap;
import java.util.List;
/**
*
* 便捷数据库操作类
*
*
* 本类的使用情景:
*
* 1.单纯想创建现有的Mapper
*
例如:
* Db.getMapper(UserLoginMapper.class).selectById("14779707158513204");
*
*
* @author fengshuonan
* @date 2017年2月22日 下午8:07:17
*/
@SuppressWarnings("all")
public class Db {
/**
* 每个Db类,包装一个Mapper接口,这个clazz就是接口的类类型,例如UserMapper.class
*/
private Class clazz;
/**
* Mapper的父类接口
*/
private BaseMapper> baseMapper;
/**
* 私有构造方法,不允许自己创建
*/
private Db(Class clazz) {
this.clazz = clazz;
this.baseMapper = (BaseMapper>) SpringContextHolder.getBean(clazz);
}
/**
*
* 创建包含指定mapper的Db工具类,使用本类的第一种用法
*
* @param clazz mapper的类类型
* @date 2017年2月22日 下午10:09:31
*/
public static Db create(Class clazz) {
return new Db(clazz);
}
/**
*
* 获取一个mapper的快捷方法
*
* @param clazz mapper类的类对象
* @date 2017年2月22日 下午10:31:35
*/
public BaseMapper> getMapper() {
return this.baseMapper;
}
/**
*
* 获取一个mapper的快捷方法
*
* @param clazz mapper类的类对象
* @date 2017年2月22日 下午10:31:35
*/
public static T getMapper(Class clazz) {
return SpringContextHolder.getBean(clazz);
}
/**
* 通过一个条件获取数据库中的一条记录(会返回null)
*
* @date 2017年2月22日 下午10:45:51
*/
public E selectOneByCon(String condition, Object value) {
List> results = selectOneByConList(condition, value);
if (results != null && results.size() > 0) {
return (E) results.get(0);
} else {
return null;
}
}
/**
* 通过一个条件获取一堆记录(会返回null)
*
* @date 2017年2月22日 下午10:45:51
*/
public List selectOneByConList(String condition, Object value) {
HashMap conditionMap = new HashMap();
conditionMap.put(condition, value);
List results = (List) this.baseMapper.selectByMap(conditionMap);
if (results == null || results.size() == 0) {
return null;
} else {
return results;
}
}
}