Mybatis+Mysql插入数据库返回自增主键id值的三种方法
一、场景:
插入数据库的值需要立即得到返回的主键id进行下一步程序操作
二、解决方法:
第一种:使用通用mapper的插入方法
Mapper.insertSelective(record);
此方法:插入一条数据,只插入不为null的字段,不会影响有默认值的字段
支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)
优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长
controller的实际应用:使用方法id会直接将映射到参数的实体上使用时直接使用参数的实体get获取值
通用mapper相关配置查看其它文章 http://blog.csdn.net/isea533/article/details/41457529
第二种:编写sql语句
dao层方法:
- /**
- * 插入数据库并返回主键id
- * @param batch
- * @return
- */
- Integer insertBatchReturnId(Batch batch);
xml的sql语句写法
记得加上useGeneratedKeys和keyProperty配置即可,前者是指设置是否使用jdbc的getGenereatedKeys方法获取主键并赋值到keyProperty设置的属性中,后者即实体类主键字段(并且大小写要对应上)
- <insert id="insertBatchReturnId" useGeneratedKeys="true" keyProperty="id" parameterType="org.uz.dxt.model.bankbase.Batch" >
- insert into t_batch (
- batchCode,
- bankCode,
- bizType,
- companyCode,
- wtEndDate,
- wtDate,
- contractId,
- totalCount,
- totalBase,
- handCode)
- values
- ( #{batchcode},
- #{bankcode},
- #{biztype},
- #{companycode},
- #{wtenddate},
- #{wtdate},
- #{contractid},
- #{totalcount},
- #{totalbase},
- #{handCode})
- </insert>
controller的实际应用:使用方法id会直接将映射到参数的实体上使用时直接使用参数的实体get获取值
- batchService.insertBatch(param);//实体
- idlist.add(param.getId());
第三种:sql语句使用<selectKey>获取自增逐渐id
- <insert id="add" parameterType="EStudent">
- // 下面是SQLServer获取最近一次插入记录的主键值的方式
- <selectKey resultType="_long" keyProperty="id" order="AFTER">
- select @@IDENTITY as id
- </selectKey>
- insert into TStudent(name, age) values(#{name}, #{age})
- </insert>
使用用法同上
这里推荐使用第一种和第二种中方法
第三种方法对oracl额外的配置
Mybatis+Mysql插入数据库返回自增主键id值的三种方法的更多相关文章
- Mybatis:插入数据返回自增主键
使用Mybatis作为工具连接MySQL,要求在插入数据之后返回自增主键 一开始也很迷惑,Mybatis使用insert之后,成功返回的是1,失败会报错或返回0,主键去哪找来 后来知道Mybatis可 ...
- mybatis插入数据后返回自增主键ID详解
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...
- Mybatis 中获取添加的自增主键ID(针对mysql)
分享一篇博客,主要就是针对在我们使用SSM的时候,在.xml中获取<insert></insert> 时的自增主键Id,由于好久没有,这个时候使用,有点生疏,就在这里写个笔记, ...
- mybaits返回自增主键ID
mybaits两种获取自增主键ID的方法:一种是使用useGeneratedKeys,第二种是selectKey方法获取. useGeneratedKeys <insert id="i ...
- Mybatis学习笔记4 - 获取自增主键的值
获取自增主键的值:mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys():useGeneratedKeys="true&qu ...
- Mybatis插入数据返回自增主键
方法有很多,参考 mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey 这里记录一下工作中自己用到的selectkey方法的详细过程. po ...
- 数据库插入数据返回当前自增主键ID值的方法
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. ...
- mybatis插入操作时,返回自增主键id
mapper.xml 代码 <insert id="insert" parameterType="com.Student" > <select ...
- MyBatis 插入时返回自增主键
XML <insert id="insert" parameterType="com.stone.model.Person"> <!-- se ...
随机推荐
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- web前端研发工程师编程能力成长之路
[背景] 如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧:如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧:如果你是四五年的前端开发高手,没有难题能难得住你的 ...
- mysql常用基础操作语法(二)~~对表的增删改操作【命令行模式】
1.修改表名:alert table oldtablename rename newtablename; 或者alert table oldtablename rename to newtablena ...
- zTree实现删除树子节点
zTree实现删除树子节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</tit ...
- live555编译环境
Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现了对多种音视频编 ...
- GitHub 错误解决
1. The file will have its original line endings in your working directory. git config --global core. ...
- WRT 版本说明
std_generic 标准通用版nokaid 是不带XBOX支持的(Kai代表连接游戏平台到网络上.)virtual** 表示支持虚拟专用网络的版本VOIP 带VOIP表示支持网络电话的版本.meg ...
- spring mvc 之@requestmapping
引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/j ...
- RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)
在自动化过程中,我们经常需要连接不同的数据库,并且对数据库进行很多不同的操作,RobotFramework中,提供了DatabaseLibrary这个库来操作数据库,我们可以按照官网中的说明来安装Da ...
- RobotFramework下的http接口自动化post关键字的使用
在http协议中,除了get请求外,另一个最常用的就是post请求了.和get 请求类似,post请求接收一个参数,[ url ] 示例1:调用博客园(http://www.cnblogs.com/) ...