2.1.X版本使用文档
注意: 此版本2024.1.1后不再提供升级, 请使用最新版本
# 代码生成器
代码生成器链接 http://192.168.106.182:6100/#/gen/generator/index
# 增删改查
# 增加方法
/appGen/insert
{
"name":"abcd3",
"custCode":"101",
"price":16.55,
"createTime":"2022-12-15"
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 删除
真删除
/appGen/deleteById
{
"id":1372075003314177
}
1
2
3
4
2
3
4
假删除, 使用注解@TableLogic
/**
* 删除标记(0有效, 1删除)
*/
@TableField("del_falg")
@TableLogic
private Integer delFalg;
1
2
3
4
5
6
2
3
4
5
6
# 修改
/appGen/updateOneById
{
"id":1372074954391552,
"name":"abcde"
}
1
2
3
4
5
2
3
4
5
# 查询列表
/appGen/selectList
{
"name":"abc"
}
1
2
3
4
2
3
4
# 分页查询
这个方法是一个由框架封装的通用的模板
/appGen/selectPageList
{
"name":"hello",
"iEFlag":"I,E",
"createTimeStart":"2022-02-01 16:50:46",
"createTimeEnd":"2022-02-15 16:50:46",
"custCode":"1",
"usedFlag":"0",
"queryField":"name|l,iEFlag|in,iEFlag|nin,createTime|d,custCode|or,usedFlag|or",
"pageSize":10,
"pageNum":1,
"sortField":"price",
"asc":true,
"totalColumn":"price,id", // 非必填
"selectColumns":"id,name,iEFlag,custCode" // 非必填
}
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
queryField: 对传入的参数加以说明, 中间用竖线分割, 字段间用逗号隔开
使用这个方法, 前端可以自由的对sql组装
字段 | 字段说明 |
---|---|
name|l | name字段采用like%%, (rl: 右边匹配白分号, ll: 左边匹配白分号) |
iEFlag|in | 传入的是字符串, 中间用逗号隔开, sql-> in (xx,xx,xx) |
iEFlag|nin | 传入的是字符串, 中间用逗号隔开, sql-> not in (xx,xx,xx) |
createTime|d | 传入的是一个时间字段, 需要传入时间范围 xxxStart, xxxEnd |
custCode|or | 多个or条件, sql-> and (xxx = xx or xxx = xx) |
name|= / name|!= | 等值匹配或不等于 |
name|nin | not in 查询方式(半角逗号分隔) |
SELECT id,name,cust_code,used_flag,price,i_e_flag,g_no,create_time,detail FROM app_gen WHERE (name LIKE ? AND create_time BETWEEN ? AND ? AND i_e_flag IN (?,?) AND i_e_flag NOT IN (?,?) AND (cust_code = ? OR used_flag = ?)) ORDER BY price ASC LIMIT ?
1
pageSize: 一页几套
pageNum: 第几页
sortField: 排序字段, 驼峰命名
asc: true升序, false降序
totalColumn: 对字段进行求和汇总, 不是当前页
selectColumns: 只查哪些字段
# 自定义分页查询
service层代码
// 在分页方法前调用
startPage();
// 正常的查询语句
List<AppGenEntity> entities = appGenDao.selectPageList(entity);
// 含有分页信息的pageInfo
return PageHandler.getPageInfo(entities);
1
2
3
4
5
6
2
3
4
5
6
# 代码名称转换
在controller层, 返回方法使用 successPlus()
使用1
// rediskey TG_WEB_BASE_CODE:ECIGW_ENT_I_E_FLAG_CN
@EciCode("ECIGW_ENT_I_E_FLAG") //redis里面的key, 这里是去头去尾的
private String iEFlag;
1
2
3
2
3
使用2
Map<String,String> map = new HashMap<>();
map.put(AppGenEntity.Fields.custCode,"ECIGW_BASE_TRANSAC");
return ResponseMsgUtil.successPlus(10001, appGenService.selectOneById(entity.getId()),map);
1
2
3
2
3
# 字段过滤
如果不做过滤, 返回给前端的字段将是整个实体类的所有字段, 有时候只想返回部分字段给前端
public ResponseMsg selectList(@RequestBody AppGenEntity entity){
List<? extends Map<?, ?>> maps = FieldFilterUtils.filterFields(appGenService.selectList(entity), true,
AppGenEntity::getId,
AppGenEntity::getgNo,
AppGenEntity::getiEFlag,
AppGenEntity::getName,
AppGenEntity::getPrice
);
return ResponseMsgUtil.successPlus(10001,maps);
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 缓存使用
使用注解@Cacheable
框架对@Cacheable注解增强过, 只需要填入字符串(redis-key), 框架自动加入参数作为key的一部分
#120表示有效期 120秒, 不写#120默认 2小时
#120 -> 有效期120秒
@Override
@Cacheable("IAppGenServiceImpl-redisCacheTest#120")
public List<AppGenEntity> redisCacheTest(AppGenEntity entity) {
return appGenDao.selectPageList(entity);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 配置文件加密
# 使用说明
背景: 项目部署上线后, 配置文件中的数据库连接信息不能明文暴露, 需要做加密处理, 框架提供了加密的解决方案
使用postman或浏览器
GET请求
127.0.0.1:端口/secret?str=明文
返回:
{
"encryptStr": "mpw:98Qz2/UQSWapzO3qcTi7UdaUjyDJC6GnScs4pq7mcho=",
"vmArgs": "--mpw.key=d1104d7c3b616f0b"
}
1
2
3
4
5
6
7
2
3
4
5
6
7
参数说明:
encryptStr: 密文
vmArgs: 项目重新启动的时候, 给虚拟机添加的参数
# 项目演示
- 先将项目运行起来, 保证项目能正常启动
- 原来配置文件: application-dev.yml
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.100.105:3308/ECI_TIANGONG?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL
username: ECI_TIANGONG
password: ECI_TIANGONG_1qaz
1
2
3
4
5
2
3
4
5
- 现在要对密码加密
GET请求
127.0.0.1:5005/secret?str=ECI_TIANGONG_1qaz
返回:
{
"encryptStr": "mpw:0qVZVrUwrMA8f09UVSqh2rNMH241T5cSSYJ5eYZFprY=",
"vmArgs": "--mpw.key=d1104d7c3b616f0b"
}
1
2
3
4
5
6
7
2
3
4
5
6
7
- 修改后的配置文件
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.100.105:3308/ECI_TIANGONG?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL
username: ECI_TIANGONG
password: mpw:0qVZVrUwrMA8f09UVSqh2rNMH241T5cSSYJ5eYZFprY=
1
2
3
4
5
2
3
4
5
- 项目启动, 添加项目参数
nohup java -jar xxxxx.jar --mpw.key=xxxx > /dev/null 2>&1 &
1
- 使用这种方式, 可以对application.yml中的各种参数加密, 如redis的url, ip, 密码等加密
上次更新: 2024/5/21 14:16:13