SELECT LAST_INSERT_ID() 的使用和注意事项
SELECT LAST_INSERT_ID() 的使用和注意事项
尊重个人劳动成果,转载请注明出处:
http://blog.csdn.net/czd3355/article/details/71302441
首先我先解释以下在在映射文件中的代码是什么意思。
<insert id="insertStudent" parameterType="com.czd.mybatis01.bean.Student">
INSERT stu(name)VALUES (#{name})
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
- 总体解释:将插入数据的主键返回到 user 对象中。
- 具体解释:
- SELECT LAST_INSERT_ID():得到刚 insert 进去记录的主键值,只适用与自增主键
- keyProperty:将查询到主键值设置到 parameterType 指定的对象的那个属性
- order:SELECT LAST_INSERT_ID() 执行顺序,相对于 insert 语句来说它的执行顺序
- resultType:指定 SELECTLAST_INSERT_ID() 的结果类型
明白是什么意思后,那么我们要如何才能得到插入数据的主键呢?请看下面代码就知道了
关键代码:
@Test
public void main() throws Exception {
StudentDao studentDao = new StudentDao();
// 增加
Student student = new Student();
student.setName("b");
studentDao.testInsertStudent(student);
}
public void testInsertStudent(Student student) throws Exception {
SqlSession sqlSession = getSession().openSession();
sqlSession.insert(nameSpace + ".insertStudent", student);
sqlSession.commit();
sqlSession.close();
// 得到插入数据的主键并将其打印出来
System.out.println("index: "+student.getId());
}
打印结果:
其中 index:21 就是我们想要的 id 值了
看到这里不知道有没有读者觉得这不是废话吗?student.getId() 后肯定是得到新插入数据的 id 呀。ok,那么我们来验证一下,把上面映射文件中的这段代码删掉。
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
打印结果:
从图中我们可以发现程序没有执行 SELECT LAST_INSERT_ID()语句了,并且 index 的值变成了 null,也就是得不到新插入数据的 id 了
到此为止,相信你应该知道怎么使用 SELECT LAST_INSERT_ID() 了吧。
注意点:假如你使用一条INSERT语句插入多个行, LAST_INSERT_ID() 只会返回插入的第一行数据时产生的值。比如我插入了 3 条数据,它们的 id 分别是 21,22,23.那么最后我还是只会得到 21 这个值。
SELECT LAST_INSERT_ID() 的使用和注意事项的更多相关文章
- 关于SELECT LAST_INSERT_ID()的使用规则
尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/71302441 首先我先解释以下在在映射文件中的代码是什么意思. < ...
- 阿里读写分离数据源SELECT LAST_INSERT_ID()获取不到id
异常现象 insert 通过 mybatis 以下语法给领域类 赋予的 id 值为0. 后续根据主键的update操作失效.且无异常抛出 <selectKey keyProperty=" ...
- mysql select last_insert_id()函数返回的值
mysql)); 创建表j 插入数据 mysql> insert into j(name) values('wanggiqpg'); Query OK, row affected (0.00 s ...
- jsp 中 , jq 获取当前所点击的 select 的 id 值的注意事项
因为是使用的 jstl 的 foreach ,所以每个 select 的 id 值都不同,要想在 change 方法中获取到 当前所点击的 select 的 id 值,需要注意的地方有: 1. 得到 ...
- select 设置发送超时发送注意事项
//设置发送超时你只发送, 并发送足够多的数据以填满发送缓冲区, 接收端一直不接收.发送端一量满发送缓冲区就会阻塞, 如果你设置了发送超时, 超时到了它就会返回发送超时了. 在send(),recv( ...
- JS实现select去除option的使用注意事项
网上讲JS动态添加option和删除option的文章很多,在此推荐一篇: http://www.jb51.net/article/35205.htm 我使用的是如下方法: function remo ...
- 插入数据时候获取返回的id 很重要 不要忘记写select last_insert_id()
- mybatis+mysql批量插入和批量更新
一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo,oo,oo) mybatis中mapper.x ...
- mybatis+mysql批量插入和批量更新、存在及更新
mybatis+mysql批量插入和批量更新 一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo, ...
随机推荐
- CentOS 7.2-编译安装zabbix 3.4
起因: 前面已经使用yum安装了zabbix 3.4了,准备去交差了,交差时老大明确要求必须使用编译安装,统一放在/usr/local目录下.... 重来吧!! 一.环境说明 本次安装使用CentOS ...
- Spring Boot 示例项目
Spring Boot 基于注解式开发 maven REST 示例项目 项目地址:https://github.com/windwant/spring-boot-service 项目地址: ...
- 使用pycharm软件配置数据库可视化
必须品: pycharm软件,专业版最好自带就有,社区版就需要安装下插件. 专业版直接会在右边的编辑框浮动,直接点开就可以配置. 如图所示,点开就可以配置相应的数据库, 点开配置完毕就可以使用了. 还 ...
- 213. String Compression【LintCode java】
Description Implement a method to perform basic string compression using the counts of repeated char ...
- python函数学习之装饰器
装饰器 装饰器的本质是一个python函数,它的作用是在不对原函数做任何修改的同时,给函数添加一定的功能.装饰器的返回值也是一个函数对象. 分类: 1.不带参数的装饰器函数: def wrapper( ...
- leetcode个人题解——#24 Swap Nodes in Pairs
因为不太熟悉链表操作,所以解决方法烦了点,空间时间多有冗余. 代码中l,r分别是每一组的需要交换的左右指针,temp是下一组的头指针,用于交换后链接:res是交换后的l指针,用于本组交换后尾指针在下一 ...
- Python3 迭代器,生成器,装饰器
1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type( ...
- ZOJ 3644 Kitty's Game(数论+DP)
Description Kitty is a little cat. She is crazy about a game recently. There arenscenes in the game( ...
- Special Offer! Super Price 999 Bourles!
Description Polycarpus is an amateur businessman. Recently he was surprised to find out that the mar ...
- Notes of the scrum meeting(12.10)
meeting time:20:00~20:30p.m.,December 10th,2013 meeting place:20号公寓前 attendees: 顾育豪 ...