MyBatis批量插入数据并获取主键示例
需积分: 38 36 浏览量
更新于2024-09-10
收藏 2KB TXT 举报
本文主要介绍了如何在MyBatis框架中实现批量插入数据并返回主键。关键在于更新MyBatis版本、避免使用@param注解以及正确配置Mapper XML文件。
在进行MyBatis批量插入操作时,我们需要确保MyBatis的版本至少是3.3.1,因为这个版本开始支持返回主键的批量插入功能。首先,你需要更新你的MyBatis依赖至3.3.1或更高版本。这可以通过修改你的项目构建文件(如Maven的pom.xml或Gradle的build.gradle)中的MyBatis依赖来完成。
在DAO接口中,批量插入的方法不应该使用Java的@RequestParam或@Param注解来接收参数,而是直接定义一个List类型的参数,例如`List<People> peopleList`。这是因为MyBatis在处理批量插入时,会根据方法参数的类型来决定如何执行SQL语句。
接下来,我们需要在对应的Mapper XML文件中配置SQL语句。这里我们创建一个`people`表,包含自增主键`id`、年龄`age`和姓名`name`。在Mapper XML文件中,使用`<foreach>`标签遍历传入的`peopleList`,并构造多个INSERT INTO语句。同时,需要设置`useGeneratedKeys="true"`和`keyProperty="id"`,这样MyBatis会在插入后自动获取新生成的主键值,并将其赋值给列表中每个对象的`id`属性。
下面是一个示例的Mapper XML配置:
```xml
<mapper namespace="com.example.mapper.PeopleMapper">
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
INSERT INTO people (age, name)
<foreach item="item" index="index" collection="list" separator=";">
VALUES (${item.age}, #{item.name})
</foreach>
</insert>
</mapper>
```
在Controller层,创建一个`People`对象列表,填充数据,然后调用上述DAO接口的批量插入方法。如下所示:
```java
@Controller
public class MyController {
@Autowired
private PeopleMapper peopleMapper;
@RequestMapping(value = "/tes3")
public void test3() {
List<People> peopleList = new ArrayList<>();
People people1 = new People();
people1.setAge(11);
people1.setName("人员1");
People people2 = new People();
people2.setAge(12);
people2.setName("人员2");
People people3 = new People();
people3.setAge(13);
people3.setName("人员3");
// 添加更多对象到列表...
peopleMapper.batchInsert(peopleList);
// 插入后,peopleList中的每个对象的id字段已经被填充为主键值
// 可以进一步处理这些主键值,例如保存到日志或关联其他表
}
}
```
通过这种方式,MyBatis不仅实现了批量插入,还能够返回每个新插入记录的主键值。这样,你可以方便地追踪每个插入的数据行,特别是在需要与关联表进行操作时。请确保在实际应用中,对数据库操作进行事务管理,以确保数据的一致性。
2020-08-25 上传
2020-09-08 上传
2023-05-13 上传
2023-05-30 上传
2023-07-27 上传
2023-05-30 上传
2023-08-21 上传
2023-09-07 上传
qq_31110073
- 粉丝: 0
- 资源: 4
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展