本文基于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会好一些。