【真实项目中收获的提升】- 使用MybatisPlus框架 怎么save之后返回主键id

问题描述:

项目中使用MybatisPlus框架,现想要save一条数据时返回主键

具体场景:

复制画布,复制子表时需要新老主键对应关系

解决方法:

直接使用this.save()方法,save方法执行结束会对其中的对象主键赋值,这个值就是save()操作之后的主键id
简单来说就是直接save(xxxEntity);就好,然后用xxxEntity.getId();就可以获得更新后的主键id值

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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 提供的主键生成器来为实体对象自动生成主键值,并将自动生成的主键值保存到实体对象。这样,当数据批量添加完成后,就可以直接从实体对象获取主键值,适用于大量数据的添加操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值