一、概述
mybatis 是一个优秀的 ORM 框架,提供了单笔保存实体数据的方法,也支持批量保存实体数据的方法。批量保存实体数据要比单笔保存实体数据的效率高,因为避免了频繁连接数据库以及频繁提交 SQL 的开销。本文将详细讲解 mybatis 单笔批量保存实体数据的方法。
二、单笔保存实体数据
单笔保存实体数据的方法比较简单,代码如下:
Integer saveStudent(Student student);
其中,Student
表示实体类,saveStudent
表示单笔保存方法。
三、批量保存实体数据
批量保存实体数据的方法需要注意两点:第一,要使用 List
类型的参数;第二,使用 foreach
标签。代码如下:
Integer batchSaveStudent(List<Student> students);
<insert id="batchSaveStudent" parameterType="java.util.List">
insert into student(name, age) values
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
其中,students
表示要保存的实体类集合, batchSaveStudent
表示批量保存方法的名称,在该方法中使用了 foreach
标签。该标签会遍历集合中的每一个实体类,将实体类中的数据插入到数据库中。注意:separator
表示 SQL 语句中的分隔符。
四、两个示例说明
示例一:单笔保存实体数据
public class Student {
private long id; //id
private String name; //姓名
private int age; //年龄
//省略getter和setter方法
}
public interface StudentMapper {
Integer saveStudent(Student student);
}
//在业务逻辑中调用
Student student = new Student();
student.setName("张三");
student.setAge(20);
studentMapper.saveStudent(student);
示例二:批量保存实体数据
//批量保存
public class StudentService {
@Autowired
private StudentMapper studentMapper;
public void batchSaveStudent(List<Student> students) {
studentMapper.batchSaveStudent(students);
}
}
//在业务逻辑中调用
List<Student> students = new ArrayList<>();
Student student1 = new Student();
student1.setName("张三");
student1.setAge(20);
students.add(student1);
Student student2 = new Student();
student2.setName("李四");
student2.setAge(21);
students.add(student2);
Student student3 = new Student();
student3.setName("王五");
student3.setAge(22);
students.add(student3);
new StudentService().batchSaveStudent(students);
以上是单笔批量保存实体数据的方法的完整攻略,希望可以帮助到读者。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis单笔批量保存实体数据的方法 - Python技术站