本文基于Java,SpringMVC框架。MVC即Model+View+Controller。即使不太确切,我喜欢将其理解为:浏览器与数据库建立联系的方式。(Browser是浏览器,DB是数据库)
Controller 层
掰收序列化信息(JSON)
通过注解进行转换
@RequestParam(可默认不写) @DeleteMapping @ApiOperation("删除分类") public Result<String> deleteById(Long id){} 查询字符串传递id参数:/admin/category?id=1
@PathVariable: @DeleteMapping("/{id}")//嵌入点
@ApiOperation("删除分类")
public Result<String> deleteById(@PathVariable Long id){}
仅在URL后嵌入参数:/admin/category/1
@RequestBody:反序列化为实体类 @PostMapping
@ApiOperation("新增分类")
public Result<String> addCategory(@RequestBody Category category) { // 业务逻辑 }
Service 层
一般来说,Service看有没有接口,有的话直接看Impl实现类会比较具体。
新增(Insert): 需要将业务中的对象封装为程序中的完整实体类,再对应添加完整实体类中应该添加但业务对象缺失的部分(通过拷贝+set方法),好处是可以通过一次Mapper层编写实现不同新增对象的数据操作。(数据完整性/业务隔离/易维护) 说人话:把不健全的变得健全,这样方便数据操作时只用处理健全的一种情况。
删除(Delete): 检查删除业务是否影响其余业务(调用其他Mapper),再进行删除处理
更新(Update): 处理逻辑上与新增相同,封装+填充;但Mapper层有所不同,一般通过if判断需要更新哪些条件(实际上思想也是一致的,将所有情况假设好再使用if与where排除,只需写一次)
查询(Select): Select的业务逻辑并不难,明确好输入参数,以及输出的是参数/对象/列表即可。
Mapper 层
Insert into 表名(字段名1,字段名2......) VALUES (#{对应对应参数1},#{对应对应参数2}...)
Delete from 表名 where id = #{id}
注:若是删除某个属性,其实是通过update的更新逻辑去实现的
Update 表名
SET column_name1 = new_value1,
column_name2 = new_value2
WHERE condition;
大部分会在xml进行操作,更加解耦与易管理,因为只需写一次
Select * from 表名
一般是在xml中操作,需要明确parameterType和resultType会好一些。