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相关推荐

  1. 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 ...

  2. insert返回主键 — mybatis selectKey

    日常项目开发中,经常会用到一个场景:在表中新增一条数据,需要得到该条数据的主键ID.如何不额外写一条查询语句来得到新增数据的主键ID呢?mybatis的selectKey实现了这个功能. mybati ...

  3. Mybatis @SelectKey用法

    @SelectKey 用处 主要用来解决主键自增问题 用法 @SelectKey(statement="SELECT LAST_INSERT_ID()", keyProperty= ...

  4. Mybatis SelectKey和UseGeneratedKey的区别

    userGeneratedKey的用法 useGeneratedKey只支持支持自增主键的数据库. oracle只能使用selectKey

  5. Mybatis 示例之 SelectKey

    从创业到再就业,浅述对程序员职业生涯的看法    征文 | 你会为 AI 转型么?    赠书:7月大咖新书机器学习/Android/python Mybatis 示例之 SelectKey 标签: ...

  6. 新增一个主键自增长_使用技巧之——MyBatis如何返回插入主键

    优点 mybatis是一种持久层框架,也属于ORM映射.前身是ibatis.相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化: ...

  7. mysql数据库怎么插入时间_给mysql数据库插入当前时间

    mysql相关的三个函数有: NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中. CURDATE()以'YYYY-MM-DD'的格式返 ...

  8. MyBatis—insert语句返回主键和selectKey标签

    本文已同步至个人博客liaosi's blog - MyBatis-insert语句返回主键和selectKey标签 往数据库中插入一条记录后,有时候我们需要这条记录的主键,用于后续的操作.如果在插入 ...

  9. MyBatis中的selectKey

    2019独角兽企业重金招聘Python工程师标准>>> SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. ...

最新文章

  1. Elasticsearch 5
  2. 动态加载jar 并进行调用
  3. pyqt根据名字获取控件
  4. 我是这样开始学编程的
  5. 【Pytorch神经网络理论篇】 11 卷积网络模型+Sobel算子原理
  6. Vue 快速集成ElementUI
  7. 你和数据分析大神之间,就差这7个沟通技巧
  8. Coinlist将在4月1日到3日举行Rally(RLY)代币销售
  9. matlab图片渲染,图像 – 在内存中渲染MATLAB图
  10. mysql数据备份3种方案
  11. 5G全息展示系统黑科技助力进博会,微美全息引领AR+AI全息通讯直播应用
  12. 计算机电脑哪个是复位键,电脑一键还原按哪个键
  13. InstallShield2015创建安装包
  14. 我的小程序之个人所得税计算器
  15. Android快速开关机
  16. Java开发对接招行一网通支付功能的总结
  17. Carte作为Windows服务
  18. ssh登录极路由后台_使用SSH来远程使用服务器上的可视化软件
  19. 使用室内地图提升体育场体验的4种方式
  20. mysql drop fulltext_MySQL使用全文索引(fulltext index)

热门文章

  1. iPhone为什么关机后仍可定位?“永远在线”处理器断电时也能启动Find My
  2. 人均奖金300万,2021年“科学探索奖”名单揭晓:高会军周昆上榜,女性获奖人8位创纪录...
  3. 魔改宜家灯泡当主机,玩转《毁灭战士》无压力!网友:远超我家第一台电脑...
  4. 日本16岁编程少年,课余打造一款新冠感染追踪App
  5. 去除ArcMap连接空间数据库中多余的属性表
  6. eyoucmsPHP企业网站内容管理系统
  7. linux内核数据结构之链表
  8. poj3268(最短路)
  9. 旋转矩阵、欧拉角、四元数比较
  10. vim编辑器基础知识总结