xuhy
2023-08-11 b659987d3e120cea0b94fdb01f1ab06260f61825
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.stylefeng.guns.core.db;
 
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.stylefeng.guns.core.util.SpringContextHolder;
 
import java.util.HashMap;
import java.util.List;
 
/**
 * <p>
 * 便捷数据库操作类
 * <p>
 * <p>
 * 本类的使用情景:
 * <p>
 * 1.单纯想创建现有的Mapper
 * <p>例如:
 * Db.getMapper(UserLoginMapper.class).selectById("14779707158513204");<br>
 * <p>
 *
 * @author fengshuonan
 * @date 2017年2月22日 下午8:07:17
 */
@SuppressWarnings("all")
public class Db<T> {
 
    /**
     * 每个Db类,包装一个Mapper接口,这个clazz就是接口的类类型,例如UserMapper.class
     */
    private Class<T> clazz;
 
    /**
     * Mapper的父类接口
     */
    private BaseMapper<?> baseMapper;
 
    /**
     * 私有构造方法,不允许自己创建
     */
    private Db(Class clazz) {
        this.clazz = clazz;
        this.baseMapper = (BaseMapper<?>) SpringContextHolder.getBean(clazz);
    }
 
    /**
     * <p>
     * 创建包含指定mapper的Db工具类,使用本类的第一种用法
     *
     * @param clazz mapper的类类型
     * @date 2017年2月22日 下午10:09:31
     */
    public static <T> Db<T> create(Class<T> clazz) {
        return new Db<T>(clazz);
    }
 
    /**
     * <p>
     * 获取一个mapper的快捷方法
     *
     * @param clazz mapper类的类对象
     * @date 2017年2月22日 下午10:31:35
     */
    public BaseMapper<?> getMapper() {
        return this.baseMapper;
    }
 
    /**
     * <p>
     * 获取一个mapper的快捷方法
     *
     * @param clazz mapper类的类对象
     * @date 2017年2月22日 下午10:31:35
     */
    public static <T> T getMapper(Class<T> clazz) {
        return SpringContextHolder.getBean(clazz);
    }
 
    /**
     * 通过一个条件获取数据库中的一条记录(会返回null)
     *
     * @date 2017年2月22日 下午10:45:51
     */
    public <E> 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 <E> List<E> selectOneByConList(String condition, Object value) {
        HashMap<String, Object> conditionMap = new HashMap<String, Object>();
        conditionMap.put(condition, value);
 
        List<E> results = (List<E>) this.baseMapper.selectByMap(conditionMap);
        if (results == null || results.size() == 0) {
            return null;
        } else {
            return results;
        }
    }
}