myBatis 新增数据并返回ID

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

Mapper 类需要注意的 
statement 是获取 下一个ID 的方法
before 代表是在插入语句之前执行,还是之后执行

oracle before = true
mysql、sqlservice before=false


mysql  数据库
@InsertProvider(type = CUDTemplate.class, method = "save")
@SelectKey(statement="SELECT LAST_INSERT_ID()", keyProperty="id", before=false, resultType=Long.class)
void saveSearch(Search search);
sqlservice 数据库
@InsertProvider(type = CUDTemplate.class, method = "save")
@SelectKey(statement="SELECT @@IDENTITY", keyProperty="N_ID", before=false, resultType=Long.class)
void saveChart(Chart chart);
oracle 数据库
@InsertProvider(type = CUDTemplate.class, method = "save")
@SelectKey(statement="SELECT DDS_SEQ.nextval AS ID FROM DUAL", keyProperty="id", before=true, resultType=Long.class)
void saveNews(News news);
domain 实体类需要注意的

public class GenerationType {
//mysql
public static final String AUTO = "auto";
 
//oracle
public static final String SEQUENCE = "sequence";
 
//mysql and oracle
public static final String UUID = "uuid";
}
 
@Id(name="n_id")
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}




2、xml配置方式

我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。
有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但不管是哪种方式,我们都可以用ibatis的节点来获取语句所产生的主键。


oracle例子:

<insert id="insertProduct-ORACLE" parameterClass="product">  

    <selectKey resultClass="int" type="pre" keyProperty="id" >  

        SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL  

    </selectKey>  

    insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)  

</insert>

sql-server例子:

<insert id="insertProduct-MS-SQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTION) values (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select @@IDENTITY as value  

    </selectKey>  

</insert>

mysql例子:

<insert id="insertProduct-MYSQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTION) values (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select LAST_INSERT_ID() as value  

    </selectKey>  

</insert>

SQLite例子:
    <insert id="Create" parameterClass="Subject">
      INSERT INTO SUBJECT
      (SubjectName,QuestionCount,IsNowPaper)
      VALUES(#SubjectName#,#QuestionCount#,#IsNowPaper#)
      <selectKey resultClass="int" type="post" property="SubjectId">
        SELECT seq
        FROM sqlite_sequence
        WHERE (name = 'SUBJECT')
      </selectKey>
    </insert>

注意:name = 'SUBJECT'中SUBJECT为表名称

MybatisPlus新增数据时怎么返回新增数据的id 阅读详情

相关推荐

手把手教你用OpenCV+Python实现HALCON级模板匹配(附工业案例代码)

本文详细介绍了如何利用开源计算机视觉库OpenCV和Python,构建媲美HALCON商业软件的工业级模板匹配解决方案。通过分析工业检测的核心挑战,文章提供了从模板预处理、多策略融合匹配到应对尺度与旋转的完整代码实现,并附有连接器引脚检测的实战案例,为工业自动化场景下的高精度视觉检测提供了低成本、高可控性的技术路径。

e3f4g5的博客 284

ibatis selectKey 配置

&lt;!--  My sql SEQUENCE--&gt;    &lt;insert   id="insertUser-MY-SQL"   parameterClass="user"&gt;          INSERT   INTO   T_USER   (name, sex) VALUES (#name#,#sex#)          &lt;selectKey   resultCla...

lg312200538的专栏 314

学习心得——COMSOL Multiphysics with MATLAB联合仿真及寻优计算

学习心得——COMSOL Multiphysics with MATLAB联合仿真及寻优计算

weixin_41678956的博客 8658

SQL Map XML 映射文件

SQL Map XML 映射文件 一个SQL Map XML映射文件可以包含任意多个Mapped Statement, Parameter Map 和Result Map.按照它们之间的逻辑关系,为您的应用合理地组织Mapped Statement, Parameter Map 和Result Map. 一 typeAlias 节点 &lt;typeAlias&gt; 节点让您为一个通...

xumingrencai 156

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 659

光线追踪渲染实战:蒙特卡洛路径追踪及其c++实现

光线追踪超越了传统的图形流水线,是一种现代的渲染。光线追踪是一种基于物理的渲染方法,通过模拟光在介质中的真实表现来输出足以逼近现实的图像。光线从光源出发,经过各种反射折射,进入摄像机。通过渲染方程描述一点的颜色,并且通过蒙特卡洛方法求解渲染方程来获取最终的像素颜色。

AKGWSB 's blog 1万+

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一、前言                                      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅。   二、 insert元素 属性详解                               其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn...

weixin_33910759的博客 6050

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

MyBatis使用简介

传统JDBC的弊端 工作量大,操作数据库至少要 5 步; 业务代码和技术代码耦合; 连接资源手动关闭,带来了隐患。 MyBatis与ORM框架 MyBatis前身是 iBatis,其源于“Internet”和“ibatis”的组合,本质是一种半自动的 ORM 框架,除了 POJO 和映射关系之外,还需要编写 SQL 语句;Mybatis映射文件三要素:SQL、映射规则和 POJO; MyBat...

YouAreMyLove995的博客 483

【OCPP】ocpp1.6J协议框架说明

本文档的目的是为读者提供创建正确的可互操作 OCPP JSON 实现 (OCPP-J) 所需的信息。我们将根据我们自己的经验,尝试解释什么是强制性的、什么是良好做法以及什么是不应该做的。毫无疑问,误解或歧义仍然存在,但我们旨在通过本文件尽可能地防止它们。IANA:互联网数字分配机构(OCPP-J:使用JSON通过WebSocket进行OCPP通信。特定的OCPP版本应使用J扩展进行指示。OCPP1.5J表示我们正在讨论1.5版本的JSON/WebSocket实现。

qq_53871375的博客 1241

在树莓派4B上基于NCNN框架部署YOLOv8的实战教程

摘要:本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的完整流程。从PyTorch模型转换为NCNN格式,到树莓派环境配置(OpenCV和NCNN编译),再到C++代码实现与优化,涵盖模型加载、推理和绘图等核心功能。测试结果显示,树莓派4B上可实现约2 FPS的检测速度,Windows平台达6~7 FPS。文章还提供了量化模型、多线程优化等实用建议,并附常见问题解答,为边缘设备部署轻量化目标检测提供了可行方案。(149字)

m0_64661770的博客 596

mybatis添加记录时返回主键id

方法:int insert(PdProduct record); int insertSelective(PdProduct record);int 返回来的其实他影响的行数, 也就是你插入一条数据, 他返回来的并不是你插入进去他数据的唯一ID使用xml配置方式1.xml配置:&lt;!-- 插入数据:返回记录的id值 --&gt; &lt;insert id="insertOneTest" p...

q1035331653的博客 898

IMX335摄像头原理图设计,已量产

从工程组织上看,IMX335 模组和 IMX415 模组属于同一类产品:核心矛盾不是外设多,而是高速图像链路、电源域和调试接口要同时兼顾。ATK-MCIMX335 这张图的结构也很直接,三路 LDO、本地 24MHz 可选时钟、4-lane MIPI 数据对和一组主板侧标准接口,构成了一张非常典型的量产摄像头子板。

不脱发的程序猿 440

Mybatis新增数据并返回主键id

所谓的自定义使用时Mybatis官方对外提供的一些没有自增主键的数据库而生成的一种方式。例如,Oracle数据库就没有自增情况,所以需要自定义来获取。注意:keyPropety属性必须采用insert表中的id的别名。具体的可看下面截图。

2401_85207246的博客 8599

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Mybatis-Plus 新增数据并返回row_id

简述: 使用Mybatis-Plus新增数据并返回数据主键值 环境: DB:Postgre SQL 插件:Mybatis-Plus Maven依赖: DB: <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> Mybatis-Plus: <dependency>

IWinds的博客 2646

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mybatis insert 数据到mysql数据库中,并返回新增一条数据的id

mybatis.xml文件中的写法 useGeneratedKeys:是否使用jdbc的getGenereatedKeys方法获取主键并赋值到keyProperty设置的属性中 keyProperty:实体类主键字段 parameterType:参数类型 <insert id="insertOne" useGeneratedKeys="true" keyProperty="id" parameterType="io.renren.modules.shigoto.entity.AppTaskInform

qq_45273160的博客 4599

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Mybatis框架新增数据后返回ID(自增主键)。

数据库id设置为自增,新增后需要返回新增的id信息。 Mapper文件(MySQL数据库): <![CDATA[ INSERT INTO wx_news ( ]]> title, content, type, which, issueder,

Abubu123的博客 3329

mybatis实现新增一条数据,并实现主键返回

只有添加了这两个属性之后才能拿到这条数据的id。

weixin_44239550的博客 1152

系列学习 SpringBoot 整合 Mybatis 之第 3 篇 —— <insert> 标签插入数据后返回主键ID

本篇博客接着上一篇:https://blog.youkuaiyun.com/BiandanLoveyou/article/details/116561268 在实际开发中,我们常常使用到 mybatis 的一个功能:新增数据后,返回主键ID,一遍其它业务做关联。我们修改新增学生数据的 mybatis xml 文件如下: <!-- 新增数据,成功后将主键值返回赋值给 id 属性 --> <insert id="insert" parameterType="com.study.entit..

流放深圳 2998

Mybatis框架新增数据返回主键id

Mybatis框架下新增数据返回主键id业务场景一、通过实体类实现实体类:mapper.xml文件ProductDao:controller:二、通过Map容器实现三、总结 业务场景 在日常开发的时候,经常会插入一条数据到数据库,并且我们需要知道插入的数据信息,这里仅做一个实现的简单记录。 一、通过实体类实现 需要新增的信息放入对应的实体类中,然后将这个类作为参数,在新增成功之后会将新增的id返回...

SGdan_qi的博客 8207

mybatis入门使用3:selectKey返回最近插入的id

在使用mybatis insert时,使用id自增有时需要返回最新插入的id; SELECT LAST_INSERT_ID() AS ID insert into t_employee (ID, EmployeeName, Position, Salary, Tel, DepartmentID ) values (#{id,jdbcType=INTEGER}, #{

一蓑烟雨 2万+

mybatis批量插入返回自增ID

返回ID的要求: 1.dao中不要出现@param注解,集合变量名请使用list 2.collection对应的值请使用list 解释: 当我们传递一个 List 实例或者数组作为参数对象传给 MyBatis。MyBatis 会自动将它包装在一个 Map 中,名称为key。List 实例将会以“list” 作为key 而数组实例将会以“array”作为value。所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以list为Key值的map。如1要求不使用指定key的话,

weixin_42255981的博客 2008

ssm 项目,往数据库添加一条数据的同时返回该条数据的id

前端为满足用户的良好体验,在插入一条数据后,根据返回的状态码,直接在页面追加一条数据,由于可能在后面操作时使用到该条数据的的id,需要再返回状态码的同时返回追加数据在数据库表中的id。如下红色部分:1在mapper中修改:&lt;insert id="insertSelective" parameterType="com.wangyun.vo.Yearcontrol"&gt; insert...

qq_37236241的博客 3911

mybatis新增语句怎么返回主键

现象: 主键使用NEWID() 函数生成 mybatis 链接 sqlservice 新增加一条数据怎么返回刚刚新增的主键、 方法: 1:serviceImpl实现层新增语句传入不带id的对象 这里对象传入进去的时候 getId 是没有值的 2:sql语句在新增语句执行之前执行主键的生成 select NEWID() as id 设置在语句执行之前就在对象的id存入 N...

细节打败一切 5039

mybatis insert后返回ID

首先,为了在添加记录时能获取到记录主键id,必须在&lt;insert&gt;的xml配置中添加3个属性: &lt;insert useGeneratedKeys="true" keyProperty="你的实体类id" keyColumn="你的表id"&gt;&lt;/insert&gt; useGeneratedKeys:必须设置为true,否则无法获取到主键id。 keyPrope..

街有三旬的博客 7763

关于useGeneratedKeys=“true“ keyProperty=“id“ 新增后返回id的理解

很多人有需求:新增一个实体后返回自增的id 但直接返回了 sql的返回值这是不对的。 <insert id="addFile" parameterType="com.wx.fastdfs.model.File" useGeneratedKeys="true" keyProperty="id"> insert into file(file_name,group_name,file_path) values (#{fileName},#{groupName},#{filePath}) &

xiaojuge的博客 2742
上一篇: Spring+Websocket实现消息的推送
下一篇: RequireJS模块化加载
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值