2024年该怎么写增删改查
校验总结:
快速失败校验放最外层 节省内存
xml都加条件标签
然后其他的校验都根据业务以及具体情况来
没有业务的时候要有空指针的校验避免空指针问题
校验的细节见 该如何做参数校验 - 稳健国国王 - 博客园 (cnblogs.com)
魔法值问题
建枚举类
入参问题
post请求put请求必须用 @RequestBody 建po
一个参数的话可以用路径传参
get请求必须用 @RequestParam
delete无所谓好像 应该也要符合post那种
入参日志紧跟着入参
快速失败校验放最外层 节省内存
xml都加条件标签
然后其他的校验都根据业务以及具体情况来
没有业务的时候要有空指针的校验避免空指针问题
校验的细节见 该如何做参数校验 - 稳健国国王 - 博客园 (cnblogs.com)
魔法值问题
建枚举类
入参问题
post请求put请求必须用 @RequestBody 建po
一个参数的话可以用路径传参
get请求必须用 @RequestParam
delete无所谓好像 应该也要符合post那种
入参日志紧跟着入参
log.debug("修改分组名称入参 updateGroupPo:{}", JSONObject.toJSONString(updateGroupPo));
括号里是后面的东西 po要转成json格式
mapper的建立是依据数据库建立的而不是service
数据库实体类和非实体类的区分以及使用场景不明确
查询之后可以直接用vo去接的数据,非得再建一个中间的dto还放在model层去转换 只有数据库出来的数据需要代码处理的话才需要dto
注释:
代码没注释,只有给前端的api注释,后端看不懂
api注释:controller
tags = "文件分组", description = "{新建,重命名,移动,删除分组,文件分组列表,下拉列表}"
入参注释
@ApiModel(value = "创建分组入参", description = "移动分组入参")
@ApiModelProperty(value = "分组名称")
出参注释
返回值问题
统一返回Response
这意味着Service也得是Response返回给controller 查询的话泛型填vo 示例:
Response<List<DocGroupListVo>>
具体的业务层里也有好多种返回的方式
比如ok了的那就得返回Response.ok()
想带着自己的东西就把返回的东西带进去
报错可以直接Response.error
也可以直接抛
但想返回对应的报错信息
异常的是这种
throw new SmartException(ResInfoEnum.USER_NOT_EXIST.getSeq(), ResInfoEnum.USER_NOT_EXIST.getMsg(), "用户名为空");
公用的枚举不要乱用
d ()这种一般是代码里And加错了或者有些奇怪的数字打进去了 如何避免 1用where条件标签 2第二个开始用And
未认证这种都是 token 认证的服务没过去
坏请求 一般是入参的值 数量 类型有不对的 链路上来说已经走到我的接口了
Create接口可能遇到的问题
1. 数据验证
- 输入数据格式错误
- 必填字段缺失
- 数据长度超出限制
- 数据类型不匹配
-
1. JSON 数据格式错误
-
问题描述:请求体中的 JSON 数据格式不正确,例如缺少逗号、多余的字符等。
-
示例:
json
深色版本1{ 2 "name": "John Doe", 3 "age" 30 // 应该是 "age": 30 4}
解决:https://www.bejson.com/ json在线校验工具 在线JSON校验格式化工具(Be JSON)
2. 必填字段缺失
-
问题描述:某些字段是必需的,但请求中没有提供这些字段。
-
示例:
json
深色版本1{ 2 "age": 30 3} // 假设 "name" 字段是必需的
- 解决:最外层做必填校验
3. 数据类型不匹配
-
问题描述:字段的实际值与预期的数据类型不符,例如期望一个整数却收到了一个字符串。
-
示例:
json
深色版本1{ 2 "name": "John Doe", 3 "age": "thirty" // 应该是数字 30 4}
解决: 细心!关注字段数据类型
4. 数据长度超限
-
问题描述:字段的长度超过了系统定义的最大长度。
-
示例:
json
深色版本1{ 2 "name": "This is a very long name that exceeds the maximum length allowed" 3} // 假设名字的最大长度为 50
解决:做长度的
参数校验 比如数据库长度限制,数据库限制大一点其实也可以
5. 日期格式错误
-
问题描述:日期字段的格式与预期不符,例如系统要求的是
yyyy-MM-dd
格式,但收到的是MM/dd/yyyy
格式。 -
示例:
json
深色版本1{ 2 "birthday": "01/01/2000" // 应该是 "2000-01-01" 3}
解决:xml
TO_CHAR(d.update_time, 'YYYY-MM-DD') AS updateTime, 可以搞定时间要什么类型以及格式
6. 非法字符
-
问题描述:字段中包含不允许的特殊字符。
-
示例:
json
深色版本1{ 2 "username": "john$doe" // 用户名中不应包含 $ 符号 3}
7. 数值范围错误
-
问题描述:数值不在允许的范围内。
-
示例:
json
深色版本1{ 2 "score": 101 // 假设分数范围为 0-100 3}
-
2. 事务管理
- 创建过程中发生部分失败导致数据不一致
@Transactional 解决
- 跨服务或跨数据库操作的事务协调困难
项目里的不同服务 可以使用郭斌教的事务方案解决
调文件中心AI的 出来之后判断一下 抛异常+注解解决
3. 并发控制
- 在高并发场景下,同一资源可能被同时创建导致冲突
- 乐观锁或悲观锁的选择与实现
4. 安全性
- SQL 注入攻击
- 敏感数据泄露
security.crypto.password
register
- 身份验证与授权不足
token验证JwtTokenEnhancer
enhance
Spring Security的@PreAuthorize 控制权限
5. 性能问题
- 大量数据写入导致性能瓶颈
- 缓存与数据库同步延迟
6. 日志记录
- 创建操作的日志记录不完整或丢失
- 错误日志级别设置不当
7. 接口设计
- 接口响应时间过长
- 返回状态码不规范
8. 数据库约束
- 主键冲突
- 外键约束违反
9. 业务逻辑错误
- 逻辑判断失误导致异常数据产生
- 异常处理不当
10. 测试覆盖
- 单元测试缺失或不足
- 集成测试场景未充分考虑
11. 系统集成
- 与其他系统交互时的数据一致性问题
- 第三方服务故障影响创建流程
12. 文档维护
- API 文档更新滞后
- 文档描述与实际实现不符
13. 版本控制
- 接口变更导致的向后兼容性问题
- 版本回滚策略不明确
14. 配置管理
- 环境配置差异导致的行为不同
- 配置文件泄露敏感信息
15. 资源限制
- 内存溢出
- 文件系统空间不足
这些问题在实际开发中需要逐一排查并解决,以确保 create
类型接口的健壮性和可靠性