MyBatis delete
1. 前言
本小節(jié),我們將一起學(xué)習(xí) MyBatis delete。
在 MyBatis 中,delete 標(biāo)簽對應(yīng)于 SQL 語句中的 delete 刪除。
2. 定義
慕課解釋:delete 標(biāo)簽用于映射 SQL 中的
刪除
語句。
3. 實(shí)例
3.1 xml 實(shí)例
如下,是一個(gè)真實(shí)的 delete 標(biāo)簽實(shí)例。
<delete id="deleteUserById">
DELETE FROM imooc_user WHERE id = #{id}
</delete>
每一個(gè) delete 標(biāo)簽都必須有一個(gè)唯一的 id 屬性,在 delete 標(biāo)簽內(nèi)部則是一條 SQL 語句。
3.2 注解實(shí)例
上面的 delete 標(biāo)簽對應(yīng)的注解實(shí)例如下:
@Delete("DELETE FROM imooc_user WHERE id = #{id}")
int deleteUserById(Integer id);
4. delete 屬性
delete 標(biāo)簽支持一些屬性來改變更新語句的行為。
其中常見且重要的屬性如下表:
屬性 | 描述 |
---|---|
id | 在命名空間中的唯一標(biāo)識符 |
parameterType | 語句的參數(shù)類型,默認(rèn)可選,MyBatis 會自動推斷 |
flushCache | 設(shè)置為 true 后,只要語句被調(diào)用,都會導(dǎo)致本地緩存和二級緩存被清空,默認(rèn)為 false |
timeout | 設(shè)置超時(shí)時(shí)間 |
statementType | STATEMENT,PREPARED 或 CALLABLE 中的一個(gè),默認(rèn)為 PREPARED(預(yù)處理) |
5. 實(shí)踐
5.1 例1. 根據(jù) id 刪除用戶
請使用 MyBatis 完成對 imooc_user 表中通過 id 刪除用戶的功能。
分析:
按照 MyBatis 的開發(fā)模式,先在對應(yīng) UserMapper.xml 文件中添加根據(jù) id 刪除用戶的 delete 標(biāo)簽,然后在 UserMapper.java 中增加上對應(yīng)的方法即可。
步驟:
首先,在 UserMapper.xml 中添加 delete 標(biāo)簽,并在標(biāo)簽中寫入 SQL :
<delete id="deleteUserById">
DELETE FROM imooc_user WHERE id = #{id}
</delete>
然后在 UserMapper.java 中添加上對應(yīng)的接口方法,方法接受 id 一個(gè)參數(shù)。
package com.imooc.mybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
int deleteUserById(Integer id);
}
結(jié)果:
通過如下代碼,我們運(yùn)行 deleteUserById 這個(gè)方法。
UserMapper userMapper = session.getMapper(UserMapper.class);
int rows = userMapper.deleteUserById(10);
System.out.println(rows);
// 一定要提交
session.commit();
session.close();
成功后,id 為 10 的用戶已被刪除。
5.2 例2. 根據(jù)用戶名刪除用戶
請使用 MyBatis 完成對 imooc_user 表中通過用戶名
刪除用戶的功能。
分析:
同上。
步驟:
首先,在 UserMapper.xml 中添加 delete 標(biāo)簽,并在標(biāo)簽中寫入 SQL :
<delete id="deleteUserByName">
DELETE FROM imooc_user WHERE username = #{username}
</delete>
然后在 UserMapper.java 中添加上對應(yīng)的接口方法,方法接受 username 一個(gè)參數(shù)。
package com.imooc.mybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
int deleteUserByName(String username);
}
結(jié)果:
通過如下代碼,我們運(yùn)行 deleteUserByName 這個(gè)方法。
UserMapper userMapper = session.getMapper(UserMapper.class);
int rows = userMapper.deleteUserByName("tom");
System.out.println(rows);
session.commit();
session.close();
成功后,用戶名為 tom 的用戶已被刪除。
6. 小結(jié)
- delete 標(biāo)簽并無太多的知識點(diǎn),主要的工作量在書寫 SQL 上,你可以借此機(jī)會來復(fù)習(xí)一下 SQL。