目录
1.批量插入
2.批量修改
3.批量删除
在实际开发中都会遇到一些批量的操作,批量操作可以在controller层进行逻辑的操作。也可以进行在映射文件中进行操作。
一、批量插入
将需要插入的对象封装成数组,然后作为参数传给映射文件进行处理。- 编写接口
public interface StudentDao {
void addStudent(Student[] students);
}
- 配置映射文件
<mapper namespace="Mapper.StudentDao">
<insert id="addStudent">
insert into student values
<!--使用foreach进行操作-->
<foreach collection="array" item="student" separator=",">
(#{student.studentId},#{student.studentName})
</foreach>
</insert>
</mapper>
实现接口传参就可以实现批量插入操作。
返回顶部
二、批量修改
批量修改同样是将对象封装成对象数组,传入到映射文件中。- 编写接口
public interface StudentDao {
void updateStudent(Student[] students);
}
- 配置映射文件
<update id="updateStudent">
<foreach collection="array" item="student" separator=";">
update student
<set>
studentName = #{student.studentName}
</set>
where studentId = #{student.studentId}
</foreach>
</update>
- 需要在连接池中配置allowMultiQueries=true
jdbc.url=jdbc:mysql://localhost:3306/text?allowMultiQueries=true
因为mybatis默认是不允许批量执行多条sql语句的。需要手动去配置开启多条语句操作。
返回顶部
三、批量删除
批量删除有两种方法。- 字符串作为参数
(1) 接口
void deleteStudent(String studentId);
(2) 配置映射文件
<delete id="deleteStudent" parameterType="String">
delete from student where studentId in (${value})
</delete>
- 数组作为参数
(1) 接口
void deleteStudent(List<String> studentId);
(2) 配置映射文件
<delete id="deleteStudent" parameterType="List">
delete from student where studentId in
<foreach collection="list" item="studentId" open="(" separator="," close=")">
#{studentId}
</foreach>
</delete>