写删除
一.删除的一般需求:
点击对应记录的删除按钮后
提示是否确认删除
确认后,页面刷新
同时提示删除记录成功
只显示没有被删除的记录
同时不显示已经删除的记录
二.删除的执行过程:
1.点击删除按钮后
2.发送一个带有该记录id的delete请求给控制器层
3.控制器层拦截这个id
①拦截所有请求
②取到id
③判断id是否为空
④为空则放入model中一个空实体
⑤不为空则进行下面的操作
4.按这个id对表进行查询
5.将查询结果放入model中
6.执行与删除对应的action方法
(1)取到上面查询结果实体作为参数
(2)传递给service中执行删除的方法
①service中的这个方法传递实体参数到dao层
②执行dao层对应删除的方法
③该方法带着实体参数执行mapper映射器中对应的update标签
获取实体中的id
按照这个id将对应记录中的del_flag更新为1
(3)提示删除成功
(4)返回到查询页面显示删除后的效果
三.删除的编写步骤:
1.写entity层
只用到Id 然后只更新del_flag 不用写
2. 写dao层接口方法
一个删除方法,直接继承就行,不用写
3.写mapper
必须写
①写update标签并配置id与dao成删除方法名一致
②写删除的sql
指定更新的表
获取id指定表中那条记录
将对应记录的del_flag设置为1
4.写service层
一个调用dao层的删除方法的方法,不用写,直接继承
5.写Controller层(关键)
这里要做的事情是写两个action:
一个action拦截带有id的请求,按id进行查询,并将记录放到model中
一个action处理delete请求,取到上一个action的实体数据,执行service的删除方法
(1)写处理delete请求的action
①注解requestMapping为delete
②注解事务为false
③定义delete方法
调用service层的delete方法并传入实体数据(补写实体形参)
提示删除成功
调用addMessage方法并传入参数(补写RedirectAttributes形参)
在js页面添加<sys:message>
重定向到查询页面,显示删除后的结果(补写返回值类型为String)
(2)写拦截带id请求的处理器action
①注解@ModelAttribute
②定义处理方法get
获取参数id
判断id是否为空
不为空
调用service的get方法并传入id
然后将方法结果直接return
为空
直接调用实体的构造方法
return调用结果
补写方法返回值类型为实体
6.补写mapper层
①写select标签配置id pt rt
②写sql 根据id查询所有字段
7.写view层:jsp
①在表头中添加一个操作列
②在表体中添加一个单元格并放入一个删除超链接
③配置href:delete请求路径+id参数