关于Mybatis-plus的Insert操作,返回主键问题

问题集锦 -02】MyBatis-Plus多节点多线程批量插入(insertBatch) 唯一主键ID冲突(Duplicate entry ‘xxxx‘ for key ‘PRIMARY‘) MyBatis-Plus 版本 3.5.1,使用Springboot搭建的项目工程。使用MyBatis-Plus中自动生成ID主键,类型为:ASSIGN_ID (使用的雪花算法生成唯一主键ID)。部署环境:采用一台服务器Docker多节点,多线程批量插入数据。 阅读详情

>关于Mybatis-plus的Insert操作,返回主键问题

Mybatis-plus默认存储完数据后,自动向传进来的实体类塞入主键ID.所以理论上无需做多余的配置.
在这里插入图片描述
如果是mybatis就需要在xml文件中做配置.下文有.

>mybatis中useGeneratedKeys和keyProperty的作用

使用场景:将对象插入id为自增的表中,同时在程序中仍需要用到该对象插入后自增的ID

方法:配置 useGeneratedKeys=“true” keyProperty=“对应的主键的对象”

<!--   主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名-->
 <insert id="insert" parameterType="user" useGeneratedKeys="true" keyProperty="id">
     insert into User(name,sex,year,create_time) values (#{name},#{sex},#{year},#{create_time})
 </insert>

这样在之后的java代码中我们就可以获取该主键对应的对象的属性值(id)

>insert主键返回 selectKey使用

https://blog.csdn.net/qq_29663071/article/details/79486048

spring boot集成mybatis-plus——Mybatis Plus 新增数据并返回主键 ID(图文讲解) Mybatis Plus 新增数据并返回主键 ID(图文讲解) 更新时间 2023-01-10 15:37:37 大家好,我是小哈。 本小节中,我们将学习如何通过 Mybatis Plus 框架给数据库表新增数据,主要内容思维导图如下: Mybatis Plus 新增数据思维导图 表结构 为了演示新增数据,在前面小节中,我们已经定义好了一个用于测试的用户表, 执行脚本如下: DROP TAB... 阅读详情

相关推荐

MyBatis-Plus插入数据后如何返回主键

本文介绍了使用MyBatis-Plus插入数据后如何返回主键的步骤和相关代码片段。通过使用Mapper接口或MyBatis-Plus的ServiceImpl,我们可以方便地获取插入后生成的主键值。希望本文对你在使用MyBatis-Plus进行数据操作时有所帮助。

理论都是虚的,代码才是王道。 4023

Mybatis-plusInsert操作,返回主键问题

Mybatis-plus默认存储完数据后,.所以理论上无需做多余的配置.如果是mybatis就需要在。

wuzj1314的博客 3127

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9411

mybatis plus 使用insert 返回主键的处理

长话短说,集成了MybatisPlus之后,自带的Save()和Mapper的Insert()方法虽然返回的是boolean类型的,但其实只要执行成功,就可以直接拿到ID,不需要其他什么配置。代码如下 Test test = new Test(); /*此处省略斌值部分*/ //直接调用save方法获取boolean返回值 boolean f1= testService.save(test); //如果为true,添加成功之后...

bakelFF的博客 1万+

mybatis plus insert返回主键_mybatis 返回 主键 的解惑

1.问题:​ 开发过程中,经常遇到这样的情况,多表关联操作,第一个表的数据插入后,需要返回id 供后面的操作使用,后续的表要使用该字段进行数据的关联。默认状态下,mybatis在插入数据后返回的是插入成功的条数 1 , 如果我们想要得到这条新增数据的ID,咋办?2.插入数据返回自增主键ID方法(一)在映射器中配置获取记录主键值xml映射: 在xml中定义useGeneratedKeys为true,...

weixin_39750598的博客 4008

mybatis plus 使用insert 没有返回主键的处理

项目使用springboot搭建。最初的时候是使用mybatis,后来升级到mybatis plus。按照mp的官网介绍,使用mp的insert方法,对于自增的数据库表,mp会把主键写入回实例的对应属性。但实际操作起来,却没有主键。 entity 类设置如下: @TableName(value = "USERINFO") public class UserInfo { /** ...

dl348的博客 3万+

Mybatisinsert 插入操作后如何返回主键 id

JDBC 提供了一个 getGeneratedKeys 方法,用于获取插入记录的主键 ID。在 MyBatis 中,我们可以通过设置 useGeneratedKeys 和 keyProperty 属性来使用该方法。useGeneratedKeys 属性的作用是告诉 MyBatis 使用 JDBC 的 getGeneratedKeys 方法获取插入记录的主键 ID。在配置文件中,我们可以在 insert 元素中设置 useGeneratedKeys 属性: 2. 设置 keyProperty 属性 keyPr

z1ztai的博客 4668

mybatis plus 使用baseMapper.insert返回自增主键id

@TableName("tb_xxx") public class TbXxx implements Serializable { private static final long serialVersionUID = 1L; //数据库id字段为:AUTO_INCREMENT @TableId(value = "id", type = IdType.AUTO) private Integer id; } @Service public class TbXxxServ

HSJ0170的博客 2万+

postgresql+Mybatis insert数据后返回主键id

postgresql+Mybatis insert数据后返回主键id1.主键id存在序列的情况2.主键id不存在序列的情况 1.主键id存在序列的情况 可以使用如下方式: <insert id="insertUser"> <selectKey resultType="int" order="AFTER" keyProperty="pid" > SELECT nextval('tbl_user_pid_seq'::regclass) AS pid &

banmajio的博客 4432

Mybatisinsert 之后想获取自增的主键 id,但却总是返回1

今早写了这个代码 想要想获取插入后的主键值,测试时却一直返回1,在网上搜了2小时,一直以为是自己写错了.....直到我看到这篇文章https://www.cnblogs.com/quan-coder/p/8728410.html 确实被自己蠢哭了 dao的代码没什么问题,是理解上有偏差 1. 想要获取自增主键img_id,应该通过对象的getImgId()方法,而并不是insert的返...

godelgnis的博客 5082

mybatis plus insert返回主键_mybatis采坑记及源码分析

问题描述有些需求,需要把上一步批量操作返回主键作为下个表的关联使用,这个时候用mybatis批量操作mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。问题跟踪跟踪1mybatis的主线版本,能够正确返回主键id,主线版本修复了这个问题,并且@Param可以自定义命名可以自己自定义集合属性名字执行成功并返回主键id跟踪2mybais的3.3.x-3.4.x源码里面...

weixin_39770165的博客 451

MyBatis——insert返回主键ID解决方案

问题描述 添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景。 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值。 问题分析 暂无。 解决方案 MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值。 添加单一记录时返回主键ID 添加一条记录时返回主键值,在xml映射器和接口映射器中都可以实现。 ...

无限迭代中...... 2617

MyBatis-Plus主键策略

MyBatis-Plus主键策略主键策略插入操作MP的主键策略ASSIGN_IDAUTO 自增策略自动填充和乐观锁更新操作自动填充(修改时间等)数据库修改实体类修改实现元对象处理器接口乐观锁(解决多人抢一个订单的问题)场景乐观锁实现流程修改实体类创建配置文件注册乐观锁插件查询查询通过多个id批量查询简单的条件查询分页分页查询分页插件添加分页插件测试selectPage分页测试selectMapsPage分页删除与逻辑删除删除根据id删除记录批量删除简单条件删除逻辑删除物理删除和逻辑删除**逻辑删除的使用场景

qq_37509948的博客 2万+

MyBatis-Plus 主键回填失效问题

MyBatis-Plus主键回填失效问题解决方案 本文系统总结了MyBatis-Plus主键回填失效的常见原因及对应解决方法: 实体类配置问题:确保主键字段标注@TableId(type=IdType.AUTO)注解,字段名与数据库列名一致 继承场景处理:子类需重新定义主键字段并标记@TableId,同时忽略父类主键字段 数据库配置问题:检查主键是否为自增类型,必要时修改表结构 自定义SQL处理:在Mapper XML中配置useGeneratedKeys和keyProperty属性 事务与驱动问题:注意事

qq_52506743的博客 905

mybatis plus insert返回主键_Mybatis插入返回主键id

使用mybatis,实现持久化 org.mybatis.generator插件用来自动生成数据库表对应的实体类。其中遇到了一个问题,如果主键是自增长或者由数据库生成的话,在使用xxxMapper.insert()和xxxMaper.insertSelective()的时候,这两种方法返回的是影响的行数,并不会返回相应的插入主键的id。而我们在后面的代码中可能需要用到刚刚保存的实体类的id,那么怎么...

weixin_39624332的博客 1万+

mybatis 返回主键的几个方法

使用来启用主键返回。通过来指定返回主键映射到哪个实体类的属性。是最常用的方法,MyBatis 会自动处理主键生成并返回。使用 @Options注解来配置返回主键(适用于注解方式)。通过 SELECT LAST_INSERT_ID()或其他手动方式,可以在一些特定场景下获取主键

Kloveys的博客 2012

Mybatis-Plus插入后返回元素ID

Mybatis-Plus提供了多种方法来在插入数据后获取数据库自增的ID。除了使用@TableId注解外,还可以使用Mybatis-Plus提供的Wrapper类或使用原生SQL查询。

ᶻᶻᶻ 枕星河的博客 1万+

mybatis plus新增(insert)数据获取主键id问题

在我们执行insert操作的时候,往往会需要拿到新插入数据的主键id做下一步操作。 例: //新增银行卡 BankCard bankCard = new BankCard(); bankCard.setBankCardRealName(bankCardRequest.getRealName()); bankCard.setBankCardNum(bankCardRequest.getBankCardNum()); bankCard.setBankName(bankCardRequest.getBank

Rookie_cc的博客 1万+

mybatis-plus baseMapper insert语句返回问题

mybatis-plus baseMapper insert语句返回问题 项目中用到了mybatis-plus 具体的业务场景是在项目启动时从mysql数据库中读取文件目录的结构,存到一个map中以备查询。 然后在插入数据时更新这个map 测试的时候老是堆溢出,怀疑是不是哪里出现了死循环,排查了一下发现是之前使用baseMapper的Insert语句的时候以为他会返回所插入行的主键id int id = fileNodeMapper.insert(fileNode); PathTool.fileNode

qq_32830061的博客 5522
上一篇: 实体类设置允许库中某个字段不存在
下一篇: Mysql根据时间/月份进行分组,附SQL中日期字符串互转
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值