亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

MyBatis delete

1. 前言

本小節,我們將一起學習 MyBatis delete。

在 MyBatis 中,delete 標簽對應于 SQL 語句中的 delete 刪除。

2. 定義

慕課解釋:delete 標簽用于映射 SQL 中的刪除語句。

3. 實例

3.1 xml 實例

如下,是一個真實的 delete 標簽實例。

<delete id="deleteUserById">
  DELETE FROM imooc_user WHERE id = #{id}
</delete>

每一個 delete 標簽都必須有一個唯一的 id 屬性,在 delete 標簽內部則是一條 SQL 語句。

3.2 注解實例

上面的 delete 標簽對應的注解實例如下:

@Delete("DELETE FROM imooc_user WHERE id = #{id}")
int deleteUserById(Integer id);

4. delete 屬性

delete 標簽支持一些屬性來改變更新語句的行為。

其中常見且重要的屬性如下表:

屬性 描述
id 在命名空間中的唯一標識符
parameterType 語句的參數類型,默認可選,MyBatis 會自動推斷
flushCache 設置為 true 后,只要語句被調用,都會導致本地緩存和二級緩存被清空,默認為 false
timeout 設置超時時間
statementType STATEMENT,PREPARED 或 CALLABLE 中的一個,默認為 PREPARED(預處理)

5. 實踐

5.1 例1. 根據 id 刪除用戶

請使用 MyBatis 完成對 imooc_user 表中通過 id 刪除用戶的功能。

分析:

按照 MyBatis 的開發模式,先在對應 UserMapper.xml 文件中添加根據 id 刪除用戶的 delete 標簽,然后在 UserMapper.java 中增加上對應的方法即可。

步驟:

首先,在 UserMapper.xml 中添加 delete 標簽,并在標簽中寫入 SQL :

<delete id="deleteUserById">
  DELETE FROM imooc_user WHERE id = #{id}
</delete>

然后在 UserMapper.java 中添加上對應的接口方法,方法接受 id 一個參數。

package com.imooc.mybatis.mapper;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
   int deleteUserById(Integer id);
}

結果:

通過如下代碼,我們運行 deleteUserById 這個方法。

UserMapper userMapper = session.getMapper(UserMapper.class);
int rows = userMapper.deleteUserById(10);
System.out.println(rows);
// 一定要提交
session.commit();
session.close();

成功后,id 為 10 的用戶已被刪除。

5.2 例2. 根據用戶名刪除用戶

請使用 MyBatis 完成對 imooc_user 表中通過用戶名刪除用戶的功能。

分析:

同上。

步驟:

首先,在 UserMapper.xml 中添加 delete 標簽,并在標簽中寫入 SQL :

<delete id="deleteUserByName">
  DELETE FROM imooc_user WHERE username = #{username}
</delete>

然后在 UserMapper.java 中添加上對應的接口方法,方法接受 username 一個參數。

package com.imooc.mybatis.mapper;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
   int deleteUserByName(String username);
}

結果:

通過如下代碼,我們運行 deleteUserByName 這個方法。

UserMapper userMapper = session.getMapper(UserMapper.class);
int rows = userMapper.deleteUserByName("tom");
System.out.println(rows);
session.commit();
session.close();

成功后,用戶名為 tom 的用戶已被刪除。

6. 小結

  • delete 標簽并無太多的知識點,主要的工作量在書寫 SQL 上,你可以借此機會來復習一下 SQL。