Mybatis --- SelectKey
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。
不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦。
SelectKey需要注意order属性,像Mysql一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。
像Oracle这样取序列的情况,需要设置为before,否则会报错。
另外在用Spring管理事务时,SelectKey和插入在同一事务当中,因而Mysql这样的情况由于数据未插入到数据库中,所以是得不到自动增长的Key。取消事务管理就不会有问题。
下面是一个xml和注解的例子,SelectKey很简单,两个例子就够了:
<insert id="insert" parameterType="map">
insert into table1 (name) values (#{name})
<selectKey resultType="java.lang.Integer" keyProperty="id">
CALL IDENTITY()
</selectKey>
</insert>
上面xml的传入参数是map,selectKey会将结果放到入参数map中。用POJO的情况一样,但是有一点需要注意的是,keyProperty对应的字段在POJO中必须有相应的setter方法,setter的参数类型还要一致,否则会报错。
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);
上面是注解的形式。
转载于:https://www.cnblogs.com/muziyushao/p/4160303.html
Mybatis --- SelectKey相关推荐
- Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦)
Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦) 1.selectKey 2.不同数据库写法 2.1 DB2 2.2.Sybase 2.3 MyS ...
- insert返回主键 — mybatis selectKey
日常项目开发中,经常会用到一个场景:在表中新增一条数据,需要得到该条数据的主键ID.如何不额外写一条查询语句来得到新增数据的主键ID呢?mybatis的selectKey实现了这个功能. mybati ...
- Mybatis @SelectKey用法
@SelectKey 用处 主要用来解决主键自增问题 用法 @SelectKey(statement="SELECT LAST_INSERT_ID()", keyProperty= ...
- Mybatis SelectKey和UseGeneratedKey的区别
userGeneratedKey的用法 useGeneratedKey只支持支持自增主键的数据库. oracle只能使用selectKey
- Mybatis 示例之 SelectKey
从创业到再就业,浅述对程序员职业生涯的看法 征文 | 你会为 AI 转型么? 赠书:7月大咖新书机器学习/Android/python Mybatis 示例之 SelectKey 标签: ...
- 新增一个主键自增长_使用技巧之——MyBatis如何返回插入主键
优点 mybatis是一种持久层框架,也属于ORM映射.前身是ibatis.相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化: ...
- mysql数据库怎么插入时间_给mysql数据库插入当前时间
mysql相关的三个函数有: NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中. CURDATE()以'YYYY-MM-DD'的格式返 ...
- MyBatis—insert语句返回主键和selectKey标签
本文已同步至个人博客liaosi's blog - MyBatis-insert语句返回主键和selectKey标签 往数据库中插入一条记录后,有时候我们需要这条记录的主键,用于后续的操作.如果在插入 ...
- MyBatis中的selectKey
2019独角兽企业重金招聘Python工程师标准>>> SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. ...
最新文章
- Elasticsearch 5
- 动态加载jar 并进行调用
- pyqt根据名字获取控件
- 我是这样开始学编程的
- 【Pytorch神经网络理论篇】 11 卷积网络模型+Sobel算子原理
- Vue 快速集成ElementUI
- 你和数据分析大神之间,就差这7个沟通技巧
- Coinlist将在4月1日到3日举行Rally(RLY)代币销售
- matlab图片渲染,图像 – 在内存中渲染MATLAB图
- mysql数据备份3种方案
- 5G全息展示系统黑科技助力进博会,微美全息引领AR+AI全息通讯直播应用
- 计算机电脑哪个是复位键,电脑一键还原按哪个键
- InstallShield2015创建安装包
- 我的小程序之个人所得税计算器
- Android快速开关机
- Java开发对接招行一网通支付功能的总结
- Carte作为Windows服务
- ssh登录极路由后台_使用SSH来远程使用服务器上的可视化软件
- 使用室内地图提升体育场体验的4种方式
- mysql drop fulltext_MySQL使用全文索引(fulltext index)
热门文章
- iPhone为什么关机后仍可定位?“永远在线”处理器断电时也能启动Find My
- 人均奖金300万,2021年“科学探索奖”名单揭晓:高会军周昆上榜,女性获奖人8位创纪录...
- 魔改宜家灯泡当主机,玩转《毁灭战士》无压力!网友:远超我家第一台电脑...
- 日本16岁编程少年,课余打造一款新冠感染追踪App
- 去除ArcMap连接空间数据库中多余的属性表
- eyoucmsPHP企业网站内容管理系统
- linux内核数据结构之链表
- poj3268(最短路)
- 旋转矩阵、欧拉角、四元数比较
- vim编辑器基础知识总结