一、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