最后,我們共同學習CURD的D - Destory刪除操作。
# 定制路由
```
<!-- 刪除 -->
<action name="delete" class="teacher.Delete">
<result name="success">/jsp/teacher/success.jsp</result>
<result name="error">/jsp/teacher/error.jsp</result>
</action>
```
# V
使用success.jsp
# C
```
package teacher;
import entity.Teacher;
public class Delete {
private int id;
private Teacher teacher;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
// 該execute方法將被自動調用, 方法的返回類型必須為String
public String execute() {
return "success";
}
}
```
# C&V測試
[http://localhost:8080/javaee/teacher/delete?id=1](http://localhost:8080/javaee/teacher/delete?id=1)
# M - entity
```
public Boolean delete() {
// 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話)
Session session = MysqlJavaee.getCurrentSession();
// 開啟事務(使用緩沖池進行數據庫的連接)
Transaction transaction = session.beginTransaction();
// 在這里,必須使用try catch finally語句。來確定會話正常關閉.
// 否則,當操作數據庫產生錯誤時,你可能需要重啟mysql服務
try {
// 刪除
session.delete(this);
// 提交事務
transaction.commit();
// 捕獲異常
} catch (HibernateException e) {
// 如果事務執行異常,則回滾事務
if (null != transaction) {
transaction.rollback();
}
// 打印異常
e.printStackTrace();
} finally {
// 如果session處于開啟狀態,則關閉session
if (session.isOpen()) {
// 關閉會話
session.close();
}
}
return true;
}
```
## 單元測試
```
@Test
public void delete() {
Teacher teacher = Teacher.getTeacherById(1);
System.out.println("更新操作前");
System.out.println(teacher.toString());
// 刪除
teacher.setName("hello1");
teacher.delete();
// 查看結果
teacher = Teacher.getTeacherById(1);
System.out.println("更新操作后");
System.out.println(teacher.toString());
}
```
# M - server
```
public static Boolean deleteById(int id) {
Teacher teacher = Teacher.getTeacherById(id);
return teacher.delete();
}
```
## 單元測試
```
@Test
public void delete() {
Teacher teacher = Teacher.getTeacherById(2);
System.out.println("刪除前");
System.out.println(teacher.toString());
TeacherServer.deleteById(2);
teacher = Teacher.getTeacherById(2);
System.out.println("刪除后");
System.out.println(teacher.toString());
}
```
控制臺:
```
刪除前
Teacher [id=2, name=李四, username=lisi, email=lisi@yunzhiclub.com, sex=false, password=456]
Hibernate: select teacher0_.id as id1_0_0_, teacher0_.email as email2_0_0_, teacher0_.name as name3_0_0_, teacher0_.password as password4_0_0_, teacher0_.sex as sex5_0_0_, teacher0_.username as username6_0_0_ from Teacher teacher0_ where teacher0_.id=?
Hibernate: delete from Teacher where id=?
Hibernate: select teacher0_.id as id1_0_0_, teacher0_.email as email2_0_0_, teacher0_.name as name3_0_0_, teacher0_.password as password4_0_0_, teacher0_.sex as sex5_0_0_, teacher0_.username as username6_0_0_ from Teacher teacher0_ where teacher0_.id=?
刪除后
```
# C&M
`// 該execute方法將被自動調用, 方法的返回類型必須為String
public String execute() {
TeacherServer.deleteById(id);
return "success";
}`·
## 集成測試
我們在數據表中,找到一條可以刪除的數據。比如ID為4
則輸入[http://localhost:8080/javaee/teacher/delete?id=4](http://localhost:8080/javaee/teacher/delete?id=4)進行測試。
> 當要刪除的數據存在時,會提示操作成功。當要刪除的數據不存在,將得到一個異常。我們在下一章解決這個問題。
- README
- 第一章:準備
- 第二章:Hello World!
- 第一節:查看工程文件
- 第二節:JDK、JRE與環境變量
- 第三節:index.jsp
- 第三章:Hello Struts
- 第一節:Web.xml
- 第二節:單入口
- 第三節:Hello Struts
- 第四節:觸發C層
- 第四章:建立數據表
- 第一節:建立實體類
- 第二節:測試一
- 第三節:測試二
- 第四節:引入Hibernate
- 第五節:配置Hibernate
- 第六節:建立連接
- 第七節:實體類映射數據表
- 第八節:完善數據表
- 第五章:教師管理
- 第一節:增加數據--add
- 第二節:增加數據--save
- 1 獲取傳入數據數據
- 2 數據寫入測試
- 3 對接C層
- 第三節:數據列表
- 1 獲取數據
- 2 重構代碼
- 3 C層對接--初始化
- 4 C層添加數據
- 5 V層顯示數據
- 6 獲取數據庫中數據
- 7 顯示性別
- 8 分頁
- 9 條件查詢
- 第四節:修改數據
- 1 edit
- 2 update
- 第五節:刪除數據
- 第六節:總結
- 第六章:重構C層
- 第一節:繼承ActionSupport類
- 第二節:數據驗證
- 第七章:前臺分離(前臺)
- 第一節:環境搭建
- 第二節:運行環境
- 第三節:共享開發環境
- 第四節:生產環境
- 第八章:前臺開發(前臺)
- 第一節:本地化
- 第二節:教師列表
- 1 引入M層
- 2 模擬后臺返回數據
- 3 C與M對接
- 4 C與V對接
- 第九章:前后臺對接(前后臺)
- 第一節:后臺輸出json(后臺)
- 第二節:對接前臺(全棧)
- 第二節:對接API(前臺)
- 第二節:跨域請求(后臺)
- 第三節:重構代碼(前臺)
- 第十章:重構后臺M層
- 第一節:數據訪問DAO層
- 第二節:項目整體重構
- 第十一章:用戶登陸(前后臺)
- 第一節:制定規范
- 第二節:定制測試用例
- 第三節:后臺輸入測試代碼(后臺)
- 第四節:postman(后臺)
- 第五節:新建用戶登陸模塊(前臺)
- 第六節:代碼重構(前臺)
- 第十二章:班級管理(前后臺)
- 第一節:班級列表
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第二節:Add
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第三節:Save
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第四節:Edit
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第五節:Update
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第六節:Delete
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第七節:小結
- 第十三章:班級管理(API)
- 第一節:ER圖
- 第二節:create
- 1 實體層
- 2 dao層
- 3 service(server)層
- 4 action層
- 第三節:ManyToOne
- 第四節:Read
- 1 service(server)層
- 2 action層
- 第五節:update
- 1 service(server)層
- 2 action層
- 第六節:update
- 第十四章:重構服務層