|
пре 10 месеци | |
---|---|---|
.mvn | пре 1 година | |
configuration | пре 10 месеци | |
db | пре 10 месеци | |
src | пре 10 месеци | |
.drone.yml | пре 10 месеци | |
.gitignore | пре 10 месеци | |
Dockerfile | пре 1 година | |
README.md | пре 10 месеци | |
docker-compose.yml | пре 10 месеци | |
pom.xml | пре 10 месеци |
Maven 配置 (用户配置)
(阿里源通用配置,无私库,无第三方库,)
./configuration/.m2/settings.xml
第三方JAR包在 ./configuration/.m2/repository
目录,命令添加到本地 Maven 仓库
mvn install:install-file -Dfile=configuration/.m2/repository/ziniao-sdk-java-5.1.0.jar -DgroupId=com.ziniao -DartifactId=ziniao-sdk-java -Dversion=5.1.0 -Dpackaging=jar
// 如果出现拒绝访问,则需要使用管理员权限执行命令
首次部署需在 pom.xml 中去除 copy-dependencies
注释,启用分包功能 (将包分离到 libs
文件夹中),像这样:
/home/www/project/BackendSys/libs
将分离出来的文件,上传到远程服务器目录
执行打包命令:
mvn clean package
mvn clean package -P dev
// 安装 nodup (Ubuntu-22.04 虚拟机可能需要安装)
sudo apt install perforate -y
// 启动 (libs文件夹与.jar包同级)
// sh backendsys.sh restart
sh backendsys.sh start
// 监视日志
tail -f backendsys.log
1) 所有返回值的输出字段,使用 蛇形命名法
(单词之间使用下划线 _ 分隔,所有字母一般都小写)
2表字段的初始值及赋值,尽量不为 0,以及不从 0 开始
创建实体类时,创建 id 的同时必须要创建多一个 类id,比如 (article_id), 在 {编辑} 与 {删除} 操作时,传参和返回值 必须使用该 类id
页码从1开始,分页使用 PageHelper 插件, Service 写法参考: com.backendsys.service.v1.System.SysUserServiceImpl.queryUser
public Map<String, Object> queryUser(Integer pageNum, Integer pageSize, SysUserDTO sysUserDTO) {
// 分页查询
if (pageNum != null && pageSize != null) {
PageHelper.startPage(pageNum, pageSize);
}
// 分页输出 (自定义)
List<Map<String, Object>> list = sysUserMapper.queryUserList(sysUserDTO);
PageInfoResult pageInfoResult = new PageInfoResult(list);
return pageInfoResult.toMap();
}
增删改
操作必须要加 redisson
分布式锁,锁的命名为小驼峰格式 (aA)提示出现 flag 字眼的代表是 逻辑删除,字段 del_flag
#### 5) GetMapper
不要在 Controller class 上面写路由,要在每个方法上面写上完整路径 (方便检索)
#### 6) Token
如果想在 token 加字段,在 JwtUtil.createSystemToken 中增加
### 3.数据库 / Mybatis
#### 1) 外键
建表,禁止使用外键
#### 2) 字段
2.1) Mybatis.xml 在 `非必填`,`空值` 的情况下,要在查询语句加入空值转义:
COALESCE(uf.nickname, '') nickname,
2.2) SQL时间字段创建统一按照以下
create_time
DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time
DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
2.3) COUNT 返回值默认是 Long 类型
COUNT(us.id) AS user_count .. Long user_count = (Long) sysUserRole.get("user_count");
2.4) Mapper/Service
- 查,列表、详情,定义变量不使用实体类,统一使用:
`List<Map<String, Object>>` 或 `Map<String, Object>`
- 增/删/改时,接收参数使用实体类;返回值使用Long类型或Map类型;
2.5) Mapper/Service/Entity/Controller 统一使用目标的`单数`命名
#### 3) 关联查询 / 嵌套查询
使用 集合类型 时:
// 列表使用 LinkedHashMap 类型,详情使用实体类 ..
或
..
#### 4) 更新操作
更新操作之前,需要手动判断该次更新的记录是否存在,并返回相关错误提示
public Result updateUserRole(@Validated(SysUserRoleDTO.Update.class) @RequestBody SysUserRoleDTO sysUserRoleDTO) { // 判断是否存在 Map sysUser = sysUserMapper.queryUserByIdOrName(sysUserDTO.getUser_id(), null); if (sysUser == null) {
return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "用户不存在");
} // ```
获得
前缀表示从数据库获取数据;查询
前缀表示从远程第三方直接获取数据;1.sys_dictionary.sql 字典表重构