编写文档
This commit is contained in:
24
docs/03.后台/01.概要/01.简介.md
Normal file
24
docs/03.后台/01.概要/01.简介.md
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: 简介
|
||||
date: 2021-02-03 09:26:32
|
||||
permalink: /pages/b017cf/
|
||||
---
|
||||
# 简介
|
||||
::: tip
|
||||
后台项目基于[SpringBoot](https://spring.io/projects/spring-boot/)+[Mybatis](https://mybatis.org/mybatis-3/zh/index.html)+[Shiro](http://shiro.apache.org/)+[Druid](https://github.com/alibaba/druid/)开发
|
||||
:::
|
||||
|
||||
|
||||
## 前序准备
|
||||
|
||||
1. 你需要在本地安装 [maven](http://maven.apache.org/index.html) 、 [java1.8](https://adoptopenjdk.net/)及支持[Springboot](https://spring.io/projects/spring-boot/) 的编译器,如: [IDEA](https://www.jetbrains.com/zh-cn/idea/promo/?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-intellij-ex-pc&utm_content=intellij-core&utm_term=idea) ,[STS](https://spring.io/tools) ,[Eclipse](https://www.eclipse.org/downloads/) , [Vscode](https://code.visualstudio.com/) 等。
|
||||
|
||||
2. 需要在编译器上安装[Lombok](https://projectlombok.org/)插件,安装方法请根据你使用的编译器自行查找。
|
||||
|
||||
3. 本项目技术栈基于 [SpringBoot](https://spring.io/projects/spring-boot/)+[Mybatis](https://mybatis.org/mybatis-3/zh/index.html)+[Shiro](http://shiro.apache.org/)+[Druid](https://github.com/alibaba/druid/)+[tkMybatis](https://github.com/abel533/Mapper) ,提前了解和学习这些知识会对使用本项目有很大的帮助。
|
||||
|
||||
|
||||
::: warning 注意
|
||||
使用此项目前,请确认已经阅读过项目[***指南***](/guide)中的全部内容,如果还未阅读,请[***点击此处***](/guide)阅读指南内容。
|
||||
:::
|
||||
|
||||
33
docs/03.后台/01.概要/02.目录结构.md
Normal file
33
docs/03.后台/01.概要/02.目录结构.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: 目录结构
|
||||
date: 2021-02-03 09:26:32
|
||||
permalink: /pages/9a02b5/
|
||||
---
|
||||
# 目录结构
|
||||
|
||||
本项目已经为你生成了一个完整的开发框架,提供了涵盖后台开发的各类功能和坑位,下面是整个项目的目录结构。
|
||||
|
||||
```bash
|
||||
├── lib # 用于存放maven仓库不包含的第三方的jar包
|
||||
├── src # 源代码
|
||||
│ ├── java.com.common.common # java代码
|
||||
│ │ ├── annotation # 注解
|
||||
│ │ ├── common # 通用类
|
||||
│ │ ├── config # 配置类
|
||||
│ │ ├── controller # 控制器
|
||||
│ │ ├── dao # dao层
|
||||
│ │ ├── entity # 实体类
|
||||
│ │ ├── service # 业务层
|
||||
│ │ │ └── impl # 业务层实现
|
||||
│ │ └── utils # 工具类
|
||||
│ └── resources # 静态资源及配置XML
|
||||
│ ├── mapping # dao层对应sql配置文件
|
||||
│ ├── static # 静态资源
|
||||
│ ├── templates # 静态页面
|
||||
│ ├── application.yml # SpringBoot配置文件
|
||||
│ ├── common.sql # 框架初始化sql
|
||||
│ ├── banner.txt # 启动图标
|
||||
│ └──generatorConfig.xml # mybatis generator配置文件
|
||||
├── .gitignore # 使git忽略上传文件的配置文件
|
||||
└── pom.xml # maven依赖配置
|
||||
```
|
||||
53
docs/03.后台/01.概要/03.如何设置以及启动项目.md
Normal file
53
docs/03.后台/01.概要/03.如何设置以及启动项目.md
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: 如何设置以及启动项目
|
||||
date: 2021-02-03 09:26:32
|
||||
permalink: /pages/de6b74/
|
||||
---
|
||||
# 如何设置以及启动项目
|
||||
|
||||
## 启动
|
||||
|
||||
```bash
|
||||
# 通过启动类运行
|
||||
```
|
||||
|
||||
## 打包
|
||||
|
||||
```bash
|
||||
mvn clean package
|
||||
```
|
||||
|
||||
## war包部署
|
||||
|
||||
```bash
|
||||
# 放入服务器如tomcat等后,启动服务器
|
||||
```
|
||||
|
||||
## jar包部署
|
||||
|
||||
```bash
|
||||
# 将jar包上传服务器后执行
|
||||
nohup java -jar common.jar > common.txt &
|
||||
```
|
||||
|
||||
## 停止服务(服务器版本)
|
||||
|
||||
```bash
|
||||
# 此处用tomcat服务器举例
|
||||
|
||||
cd tomcat
|
||||
|
||||
./bin/shutdown.sh
|
||||
|
||||
```
|
||||
|
||||
## 停止服务(jar包版本)
|
||||
|
||||
```bash
|
||||
# 查看java进程
|
||||
jps -l
|
||||
|
||||
# 结束进程
|
||||
kill -9 {pid}
|
||||
```
|
||||
|
||||
31
docs/03.后台/02.通用数据平台/01.通用数据平台简介.md
Normal file
31
docs/03.后台/02.通用数据平台/01.通用数据平台简介.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: 通用数据平台简介
|
||||
date: 2021-02-03 17:27:29
|
||||
permalink: /pages/ca1baf/
|
||||
---
|
||||
## 前言
|
||||
|
||||
通用数据平台,是为了减少代码及业务修改,而实现的数据访问层的封装。
|
||||
|
||||
基于Mybatis,并实现了多数据源,同时也完全支持mybatis的原生写法。
|
||||
|
||||
实现了通用接口等方法,尽量减少开发者的工作量。
|
||||
|
||||
自动判断自增类型,自动识别是数据库自增还是通过序列自增
|
||||
|
||||
如果通过序列自增,保存方法会自动创建相关序列,使开发者更加专注于业务开发。
|
||||
|
||||
## 更新日志
|
||||
|
||||
### 2020-02-03
|
||||
|
||||
1. 通用数据平台基于Mybatis
|
||||
2. 实现了多数据源配置,动态数据源切换,动态数据源关闭
|
||||
3. 通用Mapper不在依赖于Mvc模式,支持连表查询
|
||||
4. 支持原生Mybatis写法
|
||||
5. 支持乐观锁
|
||||
6. 支持逻辑删除
|
||||
7. 实现了通用接口,可完成增删改查,关联查询,逻辑删除,乐观锁
|
||||
8. 增加了缓存管理器
|
||||
9. 自动判断自增类型(通过数据库自增,或通过序列自增)
|
||||
10.
|
||||
64
docs/03.后台/02.通用数据平台/02.数据源配置/01.win10下安装sqlite3.md
Normal file
64
docs/03.后台/02.通用数据平台/02.数据源配置/01.win10下安装sqlite3.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: win10环境下安装Sqlite3
|
||||
date: 2021-02-04 10:06:49
|
||||
permalink: /sql/sqlitebuild
|
||||
meta:
|
||||
- name: description
|
||||
content: win10环境下安装Sqlite3
|
||||
- name: keywords
|
||||
content: windows,搭建,sqlite,安装,64为,win10
|
||||
categories:
|
||||
- sqlite
|
||||
tags:
|
||||
- sqlite
|
||||
---
|
||||
# win10环境下安装Sqlite3
|
||||
|
||||

|
||||
|
||||
<!-- more -->
|
||||
|
||||
::: tip
|
||||
|
||||
由于框架多数据源采用sqlite3进行数据持久化
|
||||
|
||||
所以需要安装sqlite3
|
||||
|
||||
MacOS系统和Linux系统已经自带sqlite3可以跳过此部分
|
||||
|
||||
win10用户请按照步骤进行安装
|
||||
|
||||
:::
|
||||
|
||||
## 一、下载sqlite
|
||||
|
||||
1. 打开官网[https://www.sqlite.org/download.html](https://www.sqlite.org/download.html)
|
||||
2. 下载**sqlite3** winodows版本,记得根据操作系统下载,32位或64位,且不管操作系统什么版本,都必须下载 `sqlite-tools-win32-x86-3340100.zip`
|
||||
|
||||

|
||||
|
||||
## 二、解压
|
||||
|
||||
解压下载好的文件,此处我用的是64位的包。
|
||||
|
||||
将 `sqlite-dll-win64-x64-3340100.zip` 和 `sqlite-tools-win32-x86-3340100.zip` 中的内容
|
||||
|
||||
复制到 `C:\Program Files\sqlite` 中
|
||||
|
||||

|
||||
|
||||
## 三、配置环境变量
|
||||
|
||||
打开系统环境变量,在 `PATH` 变量下新增一条数据,填写 `C:\Program Files\sqlite`
|
||||
|
||||

|
||||
|
||||
## 四、校验是否安装成功
|
||||
|
||||
打开系统命令提示符
|
||||
|
||||
输入 `sqlite3`
|
||||
|
||||

|
||||
|
||||
出现如上结果则说明安装成功
|
||||
50
docs/03.后台/02.通用数据平台/02.数据源配置/02.发布基础包.md
Normal file
50
docs/03.后台/02.通用数据平台/02.数据源配置/02.发布基础包.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: 发布基础包
|
||||
date: 2021-02-03 17:29:59
|
||||
permalink: /pages/351f54/
|
||||
---
|
||||
# 发布基础包
|
||||
|
||||
## 一、下载基础包
|
||||
|
||||
通过git下载基础包
|
||||
|
||||
```bash
|
||||
git clone http://taixingyiji.synology.me:1010/common-frame/common-base.git
|
||||
```
|
||||
|
||||
## 二、发布数据库驱动
|
||||
|
||||
通过终端进入当前基础包的文件夹
|
||||
|
||||
|
||||
1. 将 `oracle`数据库驱动发布到 **本地** `maven`仓库
|
||||
|
||||
```bash
|
||||
mvn install:install-file -Dfile=lib/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar
|
||||
```
|
||||
|
||||
2. 将达梦数据库驱动发布到 **本地** `maven`仓库
|
||||
|
||||
```bash
|
||||
mvn install:install-file -Dfile=lib/Dm7JdbcDriver18.jar -DgroupId=com.dm -DartifactId=Dm7JdbcDriver -Dversion=1.8 -Dpackaging=jar
|
||||
```
|
||||
|
||||
::: warning
|
||||
|
||||
若终端提示错误,请检查
|
||||
|
||||
maven仓库在系统的环境变量是否正确
|
||||
|
||||
:::
|
||||
|
||||
## 三、发布基础包
|
||||
|
||||
执行命令
|
||||
|
||||
```bash
|
||||
mvn install
|
||||
```
|
||||
|
||||
此时基础包已经发布到本地的maven仓库中
|
||||
|
||||
101
docs/03.后台/02.通用数据平台/02.数据源配置/03.配置数据源.md
Normal file
101
docs/03.后台/02.通用数据平台/02.数据源配置/03.配置数据源.md
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: 配置数据源
|
||||
date: 2021-02-04 16:32:52
|
||||
permalink: /pages/1c8b75/
|
||||
---
|
||||
# 配置数据源
|
||||
|
||||
## 一、检查pom.xml文件
|
||||
|
||||
检查在编译器中 `pom.xml` 已经可以正确读取基础包依赖,且不报错,`pom.xml` 中基础包内容如下
|
||||
|
||||
```xml
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.common.base</groupId>
|
||||
<artifactId>base</artifactId>
|
||||
<version>1.1.0-beta1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
|
||||
## 二、导入sql文件
|
||||
|
||||
在你需要配置的数据源中导入**Sql文件**
|
||||
|
||||
数据库名自定,编码集用 `utf8` ,集合用 `utf8_bin`
|
||||
|
||||
**Sql文件** 位于项目中 `resources` 目录下
|
||||
|
||||
## 三、配置Sqlite文件地址
|
||||
|
||||
打开 `resources > application.yml` 文件
|
||||
|
||||
找到数据源配置,将 `url` 参数改为你电脑上的参数,注意,此处需要填写绝对路径。
|
||||
|
||||
```yaml
|
||||
datasource:
|
||||
druid:
|
||||
# 配置sqlite文件路径,需要填写绝对路径,推荐将sqlite文件放入到服务器上,而非程序jar包或war包中
|
||||
driver-class-name: org.sqlite.JDBC
|
||||
url: jdbc:sqlite:/Volumes/DATA/ideaProject/common-frame/common/src/main/resources/datasource.db
|
||||
```
|
||||
|
||||
## 四、启动项目
|
||||
|
||||
启动项目,查看日志得到如下日志则启动成功
|
||||
|
||||
```java
|
||||
2021-02-04 16:42:09 - [main] - INFO - c.c.b.m.d.u.DataSourceUtil- initDataSource:92 : 数据源Token为:kAV20ASkVEnD32lyNe4Q
|
||||
2021-02-04 16:42:09 - [main] - INFO - c.c.c.c.c.CommandLineRunnerImpl- run:50 : start success
|
||||
```
|
||||
|
||||
记录日志中出现的 **Token** ,此处日志展示为 **kAV20ASkVEnD32lyNe4Q**
|
||||
|
||||
## 五、Token登录系统
|
||||
|
||||
访问你的项目地址根目录,此处我的访问地址为 [http://localhost:8080/common/](http://localhost:8080/common/)
|
||||
|
||||
其中后面的 `common` 为 `resources > application.yml` 文件中配置的参数具体如下
|
||||
|
||||
```yaml
|
||||
server:
|
||||
port: 8080
|
||||
servlet:
|
||||
# 此处配置端口后的地址
|
||||
context-path: /common
|
||||
```
|
||||
|
||||
访问后我们可以看到如下页面
|
||||
|
||||

|
||||
|
||||
填写刚刚在控制台看到的 **Token** ,此处填写的是 **kAV20ASkVEnD32lyNe4Q**
|
||||
|
||||
## 六、配置数据源
|
||||
|
||||
输入**Token** 校验成功后会跳转到如下页面,输入对应参数即可
|
||||
|
||||
每个参数后面都有说明,鼠标停留即可查看相关说明
|
||||
|
||||

|
||||
|
||||
输入完成后点击测试连接,测试连接通过后即可保存连接,然后跳转到登录页
|
||||
|
||||

|
||||
|
||||
点击登录即可成功跳转到主页
|
||||
|
||||

|
||||
|
||||
至此,数据源配置完成,可以开始开发了
|
||||
|
||||
::: warning
|
||||
|
||||
上述所有配置均为第一次没有添加数据源的情况
|
||||
|
||||
若已经添加数据源,但数据源无法访问的时候
|
||||
|
||||
可以在启动项目访问此链接[http://localhost:8080/common/#/dataInit](http://localhost:8080/common/#/dataInit),进行默认数据源重置
|
||||
|
||||
:::
|
||||
54
docs/03.后台/02.通用数据平台/03.BaseMapper/01.开始使用.md
Normal file
54
docs/03.后台/02.通用数据平台/03.BaseMapper/01.开始使用.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: 开始使用
|
||||
date: 2021-02-03 17:08:38
|
||||
permalink: /pages/e59b37/
|
||||
---
|
||||
# 开始使用
|
||||
|
||||
## 在代码中引入BaseMapper
|
||||
|
||||
### 一、常用方式
|
||||
|
||||
```java
|
||||
package com.common.common.module.app.service.impl;
|
||||
import com.common.base.module.data.module.BaseMapper;
|
||||
import com.common.base.module.data.module.BaseMapperImpl;
|
||||
import com.common.common.module.app.service.TestService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class TestServiceImpl implements TestService {
|
||||
@Autowired
|
||||
@Qualifier(BaseMapperImpl.BASE)
|
||||
BaseMapper baseMapper;
|
||||
}
|
||||
```
|
||||
|
||||
### 二、建议方式
|
||||
|
||||
新版本 ***Spring*** 不建议使用字段注入
|
||||
|
||||
所以如下方式也可以注入`bean` 代码效果与上面一致,建议使用下述方式注入 `bean`
|
||||
|
||||
```java
|
||||
package com.common.common.module.app.service.impl;
|
||||
|
||||
import com.common.base.module.data.module.BaseMapper;
|
||||
import com.common.base.module.data.module.BaseMapperImpl;
|
||||
import com.common.common.module.app.service.TestService;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class TestServiceImpl implements TestService {
|
||||
final
|
||||
BaseMapper baseMapper;
|
||||
public TestServiceImpl(@Qualifier(BaseMapperImpl.BASE) BaseMapper baseMapper) {
|
||||
this.baseMapper = baseMapper;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
引入后,就可以调用数据库进行增删改查了。
|
||||
52
docs/03.后台/02.通用数据平台/03.BaseMapper/02.实体类.md
Normal file
52
docs/03.后台/02.通用数据平台/03.BaseMapper/02.实体类.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: 实体类
|
||||
date: 2021-02-05 10:04:43
|
||||
permalink: /pages/ca6799/
|
||||
---
|
||||
# 实体类
|
||||
|
||||
`BaseMapper` 也支持实体类的传入方式,需要加上注解
|
||||
|
||||
在主键上添加 `@Id` 注解,需要在类上方添加 `@Table` 注解,并填写表名在参数 `name` 中
|
||||
|
||||
实体类字段必须为驼峰命名法且与数据库对应,例如 实体类中`userId` 对应数据库中为 `USER_ID`
|
||||
|
||||
如果非数据库字段需要添加注解 `@DataIgnore`
|
||||
|
||||
数据库中所有的字段必须大写
|
||||
|
||||
示例如下
|
||||
|
||||
```java
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import com.common.base.module.data.annotation.DataIgnore;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder(toBuilder = true)
|
||||
@Data
|
||||
@Table(name = "FT_USER")
|
||||
public class FtUser implements Serializable {
|
||||
|
||||
|
||||
private static final long serialVersionUID = -1043846202777180979L;
|
||||
@Id
|
||||
private Integer userId;
|
||||
|
||||
private String password;
|
||||
|
||||
private String userName;
|
||||
|
||||
@DataIgnore
|
||||
private String noDataBaseField;
|
||||
}
|
||||
|
||||
```
|
||||
256
docs/03.后台/02.通用数据平台/03.BaseMapper/03.DataMap.md
Normal file
256
docs/03.后台/02.通用数据平台/03.BaseMapper/03.DataMap.md
Normal file
@@ -0,0 +1,256 @@
|
||||
---
|
||||
title: DataMap
|
||||
date: 2021-02-05 10:50:28
|
||||
permalink: /pages/70e14e/
|
||||
---
|
||||
|
||||
# DataMap
|
||||
|
||||
## 一、前言
|
||||
`DataMap` 是BaseMapper规定的一种数据结构类型
|
||||
|
||||
`DataMap` 可以用于BaseMapper中的所有数据库操作场景
|
||||
|
||||
希望使用者可以掌握 `DataMap` 的操作方式
|
||||
|
||||
当然不使用 `DataMap` 方式同样也可以快速上手 `BaseMapper`
|
||||
|
||||
## 二、使用要求
|
||||
|
||||
在使用 `DataMap` 的时候需要使用者考虑好当前操作需要的参数及字段
|
||||
|
||||
当然,如果使用者缺少部分参数或字段,框架会通过异常的方式提示使用者
|
||||
|
||||
但是最好在系统异常提示前,就将参数写好,这样就可以通过 `DataMap` 进行快速开发
|
||||
|
||||
::: warning
|
||||
|
||||
所有的数据库操作,都必须在 `DataMap` 中设置好表名和主键名
|
||||
|
||||
部分操作还需要设置主键值,ids,和 idList等操作。
|
||||
|
||||
:::
|
||||
|
||||
## 三、参数说明
|
||||
|
||||
```java
|
||||
// 需要更新或保存的数据
|
||||
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. tableName && pkName (设置表名及主键)
|
||||
|
||||
设置表名及主键的方式有三种
|
||||
|
||||
* 通过DataMap设置主键及表名
|
||||
|
||||
```java
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.tableName("FT_USER")
|
||||
.pkName("USER_ID")
|
||||
.build();
|
||||
```
|
||||
|
||||
* 通过 `OsSysTable` 设置主键及表名
|
||||
|
||||
```java
|
||||
OsSysTable osSysTable = OsSysTable
|
||||
.builder()
|
||||
.tableName("FT_USER")
|
||||
.tablePk("USER_ID")
|
||||
.build();
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.sysOsTable(osSysTable)
|
||||
.build();
|
||||
```
|
||||
|
||||
* 通过实体类设置主键和表名
|
||||
|
||||
实体类需要按照上一章来设置,需要将 `@Id` 放到主键字段上,将 `@Table(name = "表名")` 放到实体类上
|
||||
|
||||
实体类的字段会自动填充到 `DataMap` 字段中,非数据库字段,需要在实体类字段上需要加注解 `@DataIgnore`
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().build();
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.obj(ftUser)
|
||||
.build();
|
||||
```
|
||||
|
||||
### 2. data (设置需要保存或者更新的数据)
|
||||
|
||||
* 通过 `map` 形式设置
|
||||
|
||||
```java
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("USER_NAME", "张三");
|
||||
map.put("PASSWORD", "654321");
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.data(map)
|
||||
.build();
|
||||
```
|
||||
|
||||
* 通过 `add` 方法设置数据
|
||||
|
||||
```java
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.add("USER_NAME","张三")
|
||||
.add("PASSWORD","张三")
|
||||
.build();
|
||||
```
|
||||
|
||||
* 通过实体类方式设置数据
|
||||
|
||||
实体方式会自动将实体类数据,主键和表名赋给 `DataMap`
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser
|
||||
.builder()
|
||||
.username("张三")
|
||||
.password("123456")
|
||||
.build();
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.obj(ftUser)
|
||||
.build();
|
||||
```
|
||||
|
||||
### 3. ids (主键以逗号隔开的形式)
|
||||
|
||||
```java
|
||||
DataMap<Object> dataMap = DataMap.builder()
|
||||
.ids("1,2,3")
|
||||
.build();
|
||||
```
|
||||
|
||||
当将多个主键通过上述方式赋给 `DataMap` 时,我们可以通过 `getIdList()` 方法获取 `List<String>` 类型得主键list
|
||||
|
||||
```java
|
||||
// 获取list
|
||||
List<String> idList = dataMap.getIdList();
|
||||
// idList 结果
|
||||
["1","2","3"]
|
||||
```
|
||||
|
||||
### 4. fields (字段列表)
|
||||
|
||||
与 `ids`类似,同样为逗号隔开,设置好后可以通过 `getFieldList()` 获取得到字段的list
|
||||
|
||||
### 5. 其他参数
|
||||
|
||||
其他参数可以通过正常的 `set` 方法和 `get` 方法进行获取和设置
|
||||
|
||||
也可以通过 `builder()` 和 `toBuilder()` 方法进行设置和修改
|
||||
|
||||
## 五、使用示例
|
||||
|
||||
此处只展示调用的保存示例,其余规则会写在每个文档中。
|
||||
|
||||
### 1. 实体类保存
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().userName("张三").password("123456").build()
|
||||
DataMap<FtUser> dataMap = DataMap.<FtUser>builder().obj(ftUser).build();
|
||||
baseMapper.save(dataMap);
|
||||
```
|
||||
|
||||
|
||||
### 2. 非实体类保存
|
||||
|
||||
* 方法一
|
||||
|
||||
```java
|
||||
DataMap<Object> dataMap=DataMap
|
||||
.builder()
|
||||
// 设置表名
|
||||
.tableName("FT_USER")
|
||||
// 设置主键
|
||||
.pkName("USER_ID")
|
||||
// 设置需要新增的字段及内容
|
||||
.add("USER_NAME","张三")
|
||||
.add("PASSWORD","123456")
|
||||
.build();
|
||||
baseMapper.save(dataMap);
|
||||
```
|
||||
|
||||
* 方法二
|
||||
|
||||
```java
|
||||
// 设置新增字段及内容
|
||||
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);
|
||||
```
|
||||
|
||||
* 方法三
|
||||
|
||||
```java
|
||||
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);
|
||||
```
|
||||
|
||||
* 方法四
|
||||
|
||||
```java
|
||||
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);
|
||||
```
|
||||
54
docs/03.后台/02.通用数据平台/03.BaseMapper/04.save操作.md
Normal file
54
docs/03.后台/02.通用数据平台/03.BaseMapper/04.save操作.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: save操作
|
||||
date: 2021-02-04 17:25:01
|
||||
permalink: /pages/9d6c92/
|
||||
---
|
||||
|
||||
# Save操作
|
||||
|
||||
::: tip
|
||||
|
||||
Save操作会自动判断自增类型,自动识别是数据库自增还是通过序列自增
|
||||
|
||||
如果通过序列自增,保存方法会自动创建相关序列,使开发者更加专注于业务开发。
|
||||
|
||||
如果保存失败会自动抛出异常,无需开发者做异常处理
|
||||
|
||||
:::
|
||||
|
||||
## 一、通用保存
|
||||
|
||||
```java
|
||||
// 设置新增字段及内容
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("USER_NAME","张三");
|
||||
map.put("PASSWORD", "123456");
|
||||
// 表名
|
||||
String tableName = "FT_USER";
|
||||
// 主键
|
||||
String pkName = "USER_ID";
|
||||
baseMapper.save(tableName,pkName,map);
|
||||
```
|
||||
## 二、实体类保存
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().userName("张三").password("123456").build()
|
||||
baseMapper.save(ftUser);
|
||||
```
|
||||
|
||||
## 三、DataMap保存
|
||||
|
||||
::: warning 参数约束
|
||||
|
||||
1. **tableName** 不能为空
|
||||
2. **tablePk** 不能为空
|
||||
3. **data** 不能为空
|
||||
|
||||
:::
|
||||
|
||||
```java
|
||||
baseMapper.save(dataMap);
|
||||
```
|
||||
|
||||
|
||||
|
||||
174
docs/03.后台/02.通用数据平台/03.BaseMapper/05.update操作.md
Normal file
174
docs/03.后台/02.通用数据平台/03.BaseMapper/05.update操作.md
Normal file
@@ -0,0 +1,174 @@
|
||||
---
|
||||
title: update操作
|
||||
date: 2021-02-05 08:58:56
|
||||
permalink: /pages/216aa8/
|
||||
---
|
||||
# update操作
|
||||
|
||||
## 一、updateByPk (根据主键更新)
|
||||
|
||||
### 1. 通用操作
|
||||
|
||||
```java
|
||||
// 更新的数据
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("USER_NAME","张三");
|
||||
map.put("PASSWORD", "654321");
|
||||
map.put("USER_ID", 1);
|
||||
// 表名
|
||||
String tableName = "FT_USER";
|
||||
// 主键
|
||||
String pkName = "USER_ID";
|
||||
baseMapper.updateByPk(tableName, pkName, map);
|
||||
```
|
||||
|
||||
### 2. 实体类
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().userName("张三").password("123456").build()
|
||||
baseMapper.updateByPk(ftUser);
|
||||
```
|
||||
|
||||
### 3. DataMap操作
|
||||
|
||||
## 二、updateInPk(根据主键批量更新)
|
||||
|
||||
### 1. 通用操作
|
||||
|
||||
```java
|
||||
// 需要更新的主键值
|
||||
List<Integer> idList = new ArrayList<>();
|
||||
idList.add(1);
|
||||
idList.add(2);
|
||||
idList.add(3);
|
||||
// 需要更新的字段
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("PASSWORD", "654321");
|
||||
// 表名
|
||||
String tableName = "FT_USER";
|
||||
// 主键
|
||||
String pkName = "USER_ID";
|
||||
baseMapper.updateInPk(tableName,pkName,idList,map);
|
||||
```
|
||||
|
||||
### 2. 实体类
|
||||
|
||||
```java
|
||||
// 需要更新的主键值
|
||||
List<Integer> idList = new ArrayList<>();
|
||||
idList.add(1);
|
||||
idList.add(2);
|
||||
idList.add(3);
|
||||
// 需要更新的字段
|
||||
FtUser ftUser = FtUser.builder().password("123456").build();
|
||||
baseMapper.updateInPk(ftUser,idList);
|
||||
```
|
||||
|
||||
### 3. DataMap 操作
|
||||
|
||||
#### a.实体类
|
||||
|
||||
* 方法一
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().password("654321").build();
|
||||
// 需要更新的主键值
|
||||
List<String> idList = new ArrayList<>();
|
||||
idList.add("1");
|
||||
idList.add("2");
|
||||
idList.add("3");
|
||||
DataMap<Object> dataMap = DataMap
|
||||
.builder()
|
||||
.obj(ftUser)
|
||||
// 主键值
|
||||
.idList(idList)
|
||||
.build();
|
||||
// 需要更新的字段
|
||||
baseMapper.updateInPk(dataMap);
|
||||
```
|
||||
|
||||
* 方法二
|
||||
|
||||
```java
|
||||
FtUser ftUser = FtUser.builder().password("654321").build();
|
||||
DataMap<Object> dataMap = DataMap
|
||||
.builder()
|
||||
.obj(ftUser)
|
||||
// 主键值
|
||||
.ids("1,2,3")
|
||||
.build();
|
||||
// 需要更新的字段
|
||||
baseMapper.updateInPk(dataMap);
|
||||
```
|
||||
|
||||
#### b.非实体类
|
||||
|
||||
* 方法一
|
||||
|
||||
```java
|
||||
// 更新数据
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("PASSWORD", "654321");
|
||||
DataMap<Object> dataMap = DataMap
|
||||
.builder()
|
||||
// 更新数据
|
||||
.data(map)
|
||||
// 表名
|
||||
.tableName("FT_USER")
|
||||
// 主键名
|
||||
.pkName("USER_ID")
|
||||
// 主键值
|
||||
.ids("1,2,3")
|
||||
.build();
|
||||
// 需要更新的字段
|
||||
baseMapper.updateInPk(dataMap);
|
||||
```
|
||||
|
||||
* 方法二
|
||||
|
||||
```java
|
||||
// 需要更新的主键值
|
||||
List<String> idList = new ArrayList<>();
|
||||
idList.add("1");
|
||||
idList.add("2");
|
||||
idList.add("3");
|
||||
// 更新数据
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("PASSWORD", "654321");
|
||||
DataMap<Object> dataMap = DataMap
|
||||
.builder()
|
||||
// 更新数据
|
||||
.data(map)
|
||||
// 表名
|
||||
.tableName("FT_USER")
|
||||
// 主键名
|
||||
.pkName("USER_ID")
|
||||
// 主键值
|
||||
.idList(idList)
|
||||
.build();
|
||||
// 需要更新的字段
|
||||
baseMapper.updateInPk(dataMap);
|
||||
```
|
||||
|
||||
* 方法三
|
||||
|
||||
```java
|
||||
// 需要更新的主键值
|
||||
List<String> idList = new ArrayList<>();
|
||||
idList.add("1");
|
||||
idList.add("2");
|
||||
idList.add("3");
|
||||
DataMap<Object> dataMap = DataMap
|
||||
.builder()
|
||||
// 更新数据
|
||||
.add("PASSWORD","654321")
|
||||
// 表名
|
||||
.tableName("FT_USER")
|
||||
// 主键名
|
||||
.pkName("USER_ID")
|
||||
// 主键值
|
||||
.idList(idList)
|
||||
.build();
|
||||
// 需要更新的字段
|
||||
baseMapper.updateInPk(dataMap);
|
||||
```
|
||||
Reference in New Issue
Block a user