一、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语句一样逐条删除,速度更快。