DataMap
# DataMap
# 一、前言
DataMap
是BaseMapper规定的一种数据结构类型
DataMap
可以用于BaseMapper中的所有数据库操作场景
希望使用者可以掌握 DataMap
的操作方式
当然不使用 DataMap
方式同样也可以快速上手 BaseMapper
# 二、使用要求
在使用 DataMap
的时候需要使用者考虑好当前操作需要的参数及字段
当然,如果使用者缺少部分参数或字段,框架会通过异常的方式提示使用者
但是最好在系统异常提示前,就将参数写好,这样就可以通过 DataMap
进行快速开发
注意
所有的数据库操作,都必须在 DataMap
中设置好表名和主键名
部分操作还需要设置主键值,ids,和 idList等操作。
# 三、参数说明
// 需要更新或保存的数据
private Map<String, Object> data = new HashMap();
// 主键以逗号隔开的值,例:1,2,3
private String ids;
// 主键以list方式传入的值
private List<String> idList;
// 表名
private String tableName;
// 主键名
private String pkName;
// 主键值
private Object pkValue;
// 字段默认值
private String fields = "*";
// 字段列表
private List<String> fieldList;
// 子数据
private String subData;
// selectSql 此字段可通过SelectCondition生成
private String selectSql;
// SELECT sql生成器
private SelectCondition selectCondition;
// 实体类
private T obj;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 四、开始使用
# 1. tableName && pkName (设置表名及主键)
设置表名及主键的方式有三种
- 通过DataMap设置主键及表名
DataMap<Object> dataMap = DataMap.builder()
.tableName("FT_USER")
.pkName("USER_ID")
.build();
1
2
3
4
2
3
4
- 通过
OsSysTable
设置主键及表名
OsSysTable osSysTable = OsSysTable
.builder()
.tableName("FT_USER")
.tablePk("USER_ID")
.build();
DataMap<Object> dataMap = DataMap.builder()
.sysOsTable(osSysTable)
.build();
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 通过实体类设置主键和表名
实体类需要按照上一章来设置,需要将 @Id
放到主键字段上,将 @Table(name = "表名")
放到实体类上
实体类的字段会自动填充到 DataMap
字段中,非数据库字段,需要在实体类字段上需要加注解 @DataIgnore
FtUser ftUser = FtUser.builder().build();
DataMap<Object> dataMap = DataMap.builder()
.obj(ftUser)
.build();
1
2
3
4
2
3
4
# 2. data (设置需要保存或者更新的数据)
- 通过
map
形式设置
Map<String, Object> map = new HashMap<>();
map.put("USER_NAME", "张三");
map.put("PASSWORD", "654321");
DataMap<Object> dataMap = DataMap.builder()
.data(map)
.build();
1
2
3
4
5
6
2
3
4
5
6
- 通过
add
方法设置数据
DataMap<Object> dataMap = DataMap.builder()
.add("USER_NAME","张三")
.add("PASSWORD","张三")
.build();
1
2
3
4
2
3
4
- 通过实体类方式设置数据
实体方式会自动将实体类数据,主键和表名赋给 DataMap
FtUser ftUser = FtUser
.builder()
.username("张三")
.password("123456")
.build();
DataMap<Object> dataMap = DataMap.builder()
.obj(ftUser)
.build();
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 3. ids (主键以逗号隔开的形式)
DataMap<Object> dataMap = DataMap.builder()
.ids("1,2,3")
.build();
1
2
3
2
3
当将多个主键通过上述方式赋给 DataMap
时,我们可以通过 getIdList()
方法获取 List<String>
类型得主键list
// 获取list
List<String> idList = dataMap.getIdList();
// idList 结果
["1","2","3"]
1
2
3
4
2
3
4
# 4. fields (字段列表)
与 ids
类似,同样为逗号隔开,设置好后可以通过 getFieldList()
获取得到字段的list
# 5. 其他参数
其他参数可以通过正常的 set
方法和 get
方法进行获取和设置
也可以通过 builder()
和 toBuilder()
方法进行设置和修改
# 五、使用示例
此处只展示调用的保存示例,其余规则会写在每个文档中。
# 1. 实体类保存
FtUser ftUser = FtUser.builder().userName("张三").password("123456").build()
DataMap<FtUser> dataMap = DataMap.<FtUser>builder().obj(ftUser).build();
baseMapper.save(dataMap);
1
2
3
2
3
# 2. 非实体类保存
- 方法一
DataMap<Object> dataMap=DataMap
.builder()
// 设置表名
.tableName("FT_USER")
// 设置主键
.pkName("USER_ID")
// 设置需要新增的字段及内容
.add("USER_NAME","张三")
.add("PASSWORD","123456")
.build();
baseMapper.save(dataMap);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 方法二
// 设置新增字段及内容
Map<String, Object> map=new HashMap<>();
map.put("USER_NAME","张三");
map.put("PASSWORD","123456");
DataMap<Object> dataMap=DataMap
.builder()
// 设置表名
.tableName("FT_USER")
// 设置主键
.pkName("USER_ID")
// 设置保存内容
.data(map)
.build();
baseMapper.save(dataMap);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
- 方法三
OsSysTable osSysTable = OsSysTable
.builder()
.tableName("FT_USER")
.tablePk("USER_ID")
.build();
// 设置新增字段及内容
DataMap<Object> dataMap = DataMap
.builder()
// 设置表名及字段
.sysOsTable(osSysTable)
.add("USER_NAME","张三")
.add("PASSWORD","123456")
.build();
baseMapper.save(dataMap);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
- 方法四
Map<String, Object> map = new HashMap<>();
map.put("USER_NAME", "张三");
map.put("PASSWORD", "123456");
OsSysTable osSysTable = OsSysTable
.builder()
.tableName("FT_USER")
.tablePk("USER_ID")
.build();
// 设置新增字段及内容
DataMap<Object> dataMap = DataMap
.builder()
// 设置表名及字段
.sysOsTable(osSysTable)
.data(map)
.build();
baseMapper.save(dataMap);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2021/02/07, 15:41:10