一、mybatis刪除語句sql
在使用mybatis執行刪除操作時,需要先生成相應的sql語句。比如要刪除一個名為user的表中id為1的記錄,則可以使用以下sql語句:
delete from user where id = 1
這個sql語句的含義是從user表中刪除id為1的記錄。
二、mybatis實現刪除
在mybatis中實現刪除操作需要先定義一個mapper接口,然後在該接口中定義對應的刪除方法。比如:
public interface UserMapper {
void deleteUserById(int id);
}
該方法接收一個int類型的參數,即需要刪除記錄的id。然後在mapper文件中定義相應的sql語句:
<delete id="deleteUserById" parameterType="int">
delete from user where id = #{id}
</delete>
這個<delete>標籤中的id屬性就是對應上述的deleteUserById方法名。parameterType屬性指定了接收的參數類型,這裡是int。
三、mybatis刪除語句
mybatis在執行刪除操作時還可以使用<delete>標籤中的多個屬性來定義相應的sql語句。比如:
<delete id="deleteUserByIdList" parameterType="java.util.List">
delete from user where id in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
這個sql語句的含義是刪除user表中id在給定列表中的記錄。其中collection屬性指定了需要刪除的id列表,這裡是一個java.util.List類型的參數。接下來的<foreach>標籤中定義了需要遍歷的collection,item屬性定義了collection中每個元素對應的名稱,open和close屬性分別指定了在遍歷collection時需要添加的字符串。separator屬性則指定了每個元素之間按照什麼分隔,這裡是逗號。
四、mybatis刪除文件夾目錄
在mybatis中刪除文件夾目錄同樣需要使用到<delete>標籤。假如要刪除一個位置為path的文件夾和其中的所有文件和子文件夾,則可以使用以下mapper:
<delete id="deleteFolder" parameterType="java.io.File">
<if test="file.exists()">
<if test="file.isDirectory()">
<foreach collection="file.listFiles()" item="subFile">
<include refid="deleteFolder"></include>
</foreach>
</if>
</if>
<if test="file.delete()"></if>
</delete>
這個mapper方法接收一個java.io.File類型的參數。在mapper文件的<if>標籤中,我們判斷當前傳遞進來的file對象是否存在,並判斷其是否為文件夾。如果file是文件夾,則需要遍歷其下的所有子文件和子文件夾,並遞歸調用deleteFolder方法。如果file是文件,則直接刪除。
五、mybatis刪除數據
在mybatis中如果需要刪除數據,可以先定義相應的數據類型,然後在mapper中定義對應的刪除方法。比如,定義一個User類:
public class User {
private int id;
private String name;
// getter和setter方法省略
}
然後在mapper中定義該類對應的刪除方法:
public interface UserMapper {
void deleteUser(User user);
}
該方法接收一個User類型的參數,即需要刪除的用戶對象。mapper中的sql語句如下:
<delete id="deleteUser" parameterType="User">
delete from user where id = #{id}
</delete>
這裡即使用input標籤將需要刪除的用戶對象傳入sql語句中。
六、mybatis刪除列表
在mybatis中如果需要刪除列表數據,則同樣需要定義列表對應的數據類型,並在mapper中定義對應的刪除方法。假如定義一個User類表示用戶信息,則定義一個user列表對應的方法:
public interface UserMapper {
void deleteUserList(List<User> userList);
}
mapper文件中的sql語句如下:
<delete id="deleteUserList" parameterType="java.util.List">
delete from user where id in
<foreach collection="list" item="user" index="index" open="(" separator="," close=")">
#{user.id}
</foreach>
</delete>
在foreach標籤中,我們使用item屬性指定每個User對象對應的名稱,index屬性指定數組下表對應的名稱。list屬性依舊指定了需要遍歷的列表,open和close屬性也類似。separator則指定了每個元素需要使用什麼分隔符隔開。
七、mybatis刪除操作
在mybatis中如果需要刪除數據庫中的數據,則可以直接調用對應的mapper接口中的刪除方法。比如在service層中調用UserMapper:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
//其他方法省略
@Override
public void deleteUserById(int id) {
userMapper.deleteUserById(id);
}
}
這裡直接調用了在UserMapper中定義的deleteUserById方法,即可完成刪除操作。
八、mybatis刪除返回值
在mybatis執行刪除操作時,一般是不需要返回值的。但是為了後續業務需要,有時也需要返回刪除的行數,在mapper文件中可以使用<selectKey>標籤指定返回值。比如:
<delete id="deleteUserById" parameterType="int">
delete from user where id = #{id}
<selectKey keyProperty="count" order="AFTER" resultType="int">
select count(*) from user where id = #{id}
</selectKey>
</delete>
在這個mapper中我們使用selectKey標籤來返回刪除的行數。keyProperty指定了需要返回的結果對應的屬性名,即mapper中Java對象的屬性名。order屬性指定了查詢語句的執行順序,AFTER表示在delete語句執行完畢後才執行selectKey查詢。resultType指定了查詢結果的數據類型,這裡是int。
九、mybatis刪除表數據
在mybatis中如果需要刪除某個表中所有的數據,則可以直接執行truncate語句來完成。比如需要刪除名為user的表中的所有數據,mapper文件中可以定義如下sql語句:
<delete id="truncateUser" >
truncate table user
</delete>
這裡的truncate語句可以一次性刪除所有表中的數據,並且不需要像delete語句一樣逐條刪除,速度更快。
原創文章,作者:YQEWZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/316217.html
微信掃一掃
支付寶掃一掃