约束
是否写Mapper?
- 能用基本的增删改查的用基本的增删改查
- 笔记复杂写mapper 文件
delete save update
- save 默认返回插入的ID 不需要就和 update和delete 一样返回void
- delete update 在service层就返回void 不需要返回
层级之间的传输 insert delete update select
层级与层级之间的传输用DTO 也可以不用
DB – > 前端
- DO 能力层在service 的查询结果就是DO 对象
- 变换成RespDTO对象的时候需要考虑拷贝问题 过滤掉部分参数
- 应用层service API 也可能设计拷贝问题
前端 – > DB
- 前端传入参数
- 传递到能力层
- 如果是insert 在service 对参数进行封装DTO 加上一些属性 比如更新人 更新时间
- 如果是delete 可直接使用已有的方法进行删除
- 如果是 select 一般需要参数 偶尔需要分页
- 如果是update 一般也需要删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1T3XutEY-1636698953557)(C:\Users\yantingrui\Pictures\markdown\099c9c4985eb4f71ab6a1e4ffa4ffc72.png)]
Mapper xml书写注意
- select 检索 查询条件先要判断是否为空
<if test="query.trackWayId != null">
AND track_way_id = #{query.trackWayId}
</if>
- 包含代码
<include refid="Base_Column_List"/>
- foreach
<if test="query.ids != null and query.ids.size() > 0">
AND a.id in
<foreach item="id" collection="query.ids" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
- 拼接
AND d.company_name like concat('%',#{query.companyName},'%')
mapper
mapper 案例
@Mapper
public interface TrackMapper extends BaseMapper<TrackDO> {
List<TrackDO> selectListByDTO(IPage page, @Param("query") TrackQueryDTO query);
List<Long> listUnkeyByImportance( @Param("type") Integer type, @Param("importance") Integer importance);
}
能力层的返回
delete 直接是一个结果 void Result.ok();
update 也是直接返回一个结果 void Result.ok();
insert 也是返回一个结果 void Result.ok();
mybatiesPlus 是boolean 类型
插入删除更新mapper 都用int 承接 https://blog.csdn.net/weixin_39654465/article/details/111200993
service 层
- 参考代码在层级之间相互调用
- sql 学习
- 匿名查询 lambdaQuery().eq(ProductListDO::getClueId, clueId).list();
- wrapper 查询条件
- 缺少from字段
controller 层
不需要操作什么 直接返回
@GetMapping("/v1/scrm/config/all")
API 模块
复制 controller 层接口也不需要做什么