mybatisplus 批量添加返回主键
时间: 2023-05-31 12:19:36 浏览: 1082
### 回答1:
MybatisPlus是一个高效的java持久层框架,它在Mybatis的基础上增加了一些便捷的功能,提供了更加易用的API,可以大幅度提高开发效率。
在使用MybatisPlus批量添加时,我们可以使用batch模式来一次性添加多条数据,这比逐条添加数据更加高效。但是在传统的Mybatis中,我们批量添加是无法返回主键的,需要自行设置,而MybatisPlus则提供了从批量添加中返回主键的方法:
1、在Mapper中添加@Options注解,设置useGeneratedKeys参数为true,表示使用自增主键。
```
@Insert("<script>" +
"INSERT INTO table_name(column1, column2, column3) VALUES " +
"<foreach collection='list' item='item' separator=','>(" +
"#{item.column1},#{item.column2},#{item.column3})" +
"</foreach>" +
"</script>")
@Options(useGeneratedKeys = true, keyProperty = "id")
void batchInsert(List<Table> tableList);
```
2、在实体类中定义主键属性,使用@KeySequence注解指定主键的序列名称,如下所示:
```
@Data
@TableName("table_name")
public class Table implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.INPUT)
@KeySequence(value = "SEQ_TABLE_NAME_ID", clazz = Long.class)
private Long id;
private String column1;
private String column1;
private String column1;
}
```
通过以上两步,我们便可以从批量添加中返回主键,实现更加高效的数据插入操作。
### 回答2:
Mybatis-Plus (简称 MP) 是一个 Mybatis 的增强工具,通过它可以快速便捷地操作数据库,其中批量添加数据是常见的操作之一。但是很多人在使用 Mybatis-Plus 时遇到了一个问题:如何在批量添加数据时返回主键?
实际上,Mybatis-Plus 提供了一种便捷的方式来返回主键,就是使用 `insertBatchSomeColumn` 方法。该方法允许我们在批量插入数据时,指定哪些字段需要返回主键。
以下是示例代码:
```java
List<User> userList = new ArrayList<>();
userList.add(new User("张三"));
userList.add(new User("李四"));
userList.add(new User("王五"));
// 批量插入数据,指定需要返回的主键字段
userMapper.insertBatchSomeColumn(userList);
```
可以看到,我们在 `insertBatchSomeColumn` 方法中传入需要插入的数据集合,该方法会自动将数据插入到对应的数据库表中,并将所指定的主键字段返回。
需要注意的是,该方法只适用于单表操作,并且需要在实体类的主键字段上添加 `@TableId` 注解来指定主键。如果实体类没有添加该注解,则会报错。
以上就是在 Mybatis-Plus 中批量添加数据返回主键的方法。通过使用 `insertBatchSomeColumn` 方法,我们可以省去很多繁琐的手动操作,快速高效地完成数据操作。
### 回答3:
Mybatis-plus 是一种优秀的 ORM(object-relational mapping)框架,它在 Mybatis 框架的基础上进行了一系列的增强和改进,提供了更加强大、灵活的操作数据库的功能。在数据库操作中,批量添加数据是一个常见的需求,如何使用 Mybatis-plus 实现批量添加并返回主键值呢?
在 Mybatis-plus 中,可以使用 `com.baomidou.mybatisplus.extension.service.IService` 接口的 `saveBatch` 方法实现批量添加数据。这个方法接收一个 `List` 集合作为参数,集合中包含需要添加的实体对象。使用这个方法添加数据时,Mybatis-plus 会自动为每一个实体对象生成一个主键,并将其添加到数据库中。
在添加完数据后,我们需要获取新增数据的主键值。Mybatis-plus 提供了以下几种方式:
1. 手动设置主键值:在添加数据前手动为每一个实体对象设置主键值,这样添加完成后就可以直接获取到主键值。缺点是不方便且容易出错,不建议使用。
2. 自定义主键生成器:可以使用 Mybatis-plus 提供的主键生成器来为实体对象生成主键值。这种方式需要在实体类中通过 `@TableId` 注解指定主键生成方式。虽然这种方式可以自动为实体对象生成主键值,但是需要根据实际需求进行调整,并且不同数据库的主键生成方式可能不同。
3. 使用 `com.baomidou.mybatisplus.core.metadata.IPage` 接口的 `getRecords` 方法:在调用 `saveBatch` 方法后,可以通过 `getRecords` 方法获取批量添加的实体对象列表,从而获取它们的主键值。这种方式的缺点是需要再次查询数据库,不适用于大量数据的添加操作。
因此,综合起来,最为常用的方式是使用 Mybatis-plus 提供的主键生成器来为实体对象自动生成主键值,并将自动生成的主键值保存到实体对象中。这样,当数据批量添加完成后,就可以直接从实体对象中获取主键值,适用于大量数据的添加操作。
阅读全文