- 概要

- 通用数据平台

  - 通用数据平台简介

  - 数据源配置

  - BaseMapper

    - 开始使用
    - 实体类
    - DataMap
      - 一、前言
      - 二、使用要求
      - 三、参数说明
      - 四、开始使用
        - 1. tableName && pkName （设置表名及主键）
        - 2. data (设置需要保存或者更新的数据)
        - 3. ids (主键以逗号隔开的形式)
        - 4. fields (字段列表)
        - 5. 其他参数
      - 五、使用示例
        - 1. 实体类保存
        - 2. 非实体类保存
    - save操作
    - update操作

- 后台
- 通用数据平台
- BaseMapper

haocheng Liu
2021-02-05

# 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

## # 四、开始使用

### # 1. tableName && pkName （设置表名及主键）

设置表名及主键的方式有三种

- 通过DataMap设置主键及表名

    DataMap<Object> dataMap = DataMap.builder()
            .tableName("FT_USER")
            .pkName("USER_ID")
            .build();

1
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

- 通过实体类设置主键和表名

实体类需要按照上一章来设置，需要将 `@Id` 放到主键字段上，将 `@Table(name = "表名")` 放到实体类上

实体类的字段会自动填充到 `DataMap` 字段中，非数据库字段，需要在实体类字段上需要加注解 `@DataIgnore`

    FtUser ftUser = FtUser.builder().build();
    DataMap<Object> dataMap = DataMap.builder()
            .obj(ftUser)
            .build();

1
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

- 通过 `add` 方法设置数据

    DataMap<Object> dataMap = DataMap.builder()
            .add("USER_NAME","张三")
            .add("PASSWORD","张三")
            .build();

1
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

### # 3. ids (主键以逗号隔开的形式)

    DataMap<Object> dataMap = DataMap.builder()
            .ids("1,2,3")
            .build();

1
2
3

当将多个主键通过上述方式赋给 `DataMap` 时，我们可以通过 `getIdList()` 方法获取 `List<String>` 类型得主键list

    // 获取list
    List<String> idList = dataMap.getIdList();
    // idList 结果
    ["1","2","3"]

1
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. 非实体类保存

- 方法一

    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

- 方法二

     // 设置新增字段及内容
    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

- 方法三

     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

- 方法四

    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
上次更新: 2021/02/07, 15:41:10
实体类
save操作

← 实体类 save操作→

最近更新

  01
实体类
02-05

  02
update操作
02-05

  03
save操作
02-04

更多文章>

Theme by Vdoing | Copyright © 2021-2023 Haocheng Liu | MIT License

- 跟随系统
- 浅色模式
- 深色模式
- 阅读模式