mybatis 自增主键配置
来源:互联网 发布:天津绫致时装淘宝真假 编辑:程序博客网 时间:2024/05/17 06:05
mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 MySQL 自增主键,至于其他的手动生成唯一主键的问题在这里就不讨论了,这里主要说明下在mybatis中对于自增主键的配置。
不返回自增主键值
如果考虑到插入数据的主键不作为其他表插入数据的外键使用,那么可以考虑使用这种方式。
oracle Sequence 配置
当插入语句如上配置时,那么针对如下语句
user.id
为空,也就是说如上的配置并不能在完成插入操作后将插入时的主键值存放到保存的对象中。mysql自增主键配置
由于mysql数据库中,可以设置表的主键为自增,所以对于Mysql数据库在mybatis配置插入语句时,不指定插入ID字段即可。主键的自增交由Mysql来管理。
同样,针对Mysql如此配置mybaits,插入完成后
user.id
为空。
插入后获取自增主键值
上述的情况能满足大部分情况,但有时候我们会遇到类似一对多的那种表结构,在插入多端数据时,需要获取刚刚保存了的一段的主键。那么这个时候,上述的配置就无法满足需要了。为此我们需要使用mybatis提供的<selectKey />
来单独配置针对自增逐渐的处理。
Oracle Sequence 配置
当使用了
<selectKey />
后,在实际的插入操作时,mybatis会执行以下两句SQL:在执行插入 语句2 之前,会先执行 语句1 以获取当前的ID值,然后mybatis使用反射调用
User
对象的setId
方法,将 语句1 查询出的值保存在User
对象中,然后才执行 语句2 这样就保证了执行完插入后user.id
是有值的。Mysql自增主键配置
针对于Mysql这种自己维护主键的数据库,可以直接使用以下配置在插入后获取插入主键, 在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名。 java Dao中的Insert方法,传递的参数必须为java对象,也就是Bean,而不能是某个参数。
当然,由于Mysql的自增主键可以通过SQL语句
来获取的。因此针对Mysql,Mybatis也可配置如下:
只不过该中配置需要额外的一条查询SQL!
小结
当数据插入操作不关心插入后数据的主键(唯一标识),那么建议使用 不返回自增主键值 的方式来配置插入语句,这样可以避免额外的SQL开销.
当执行插入操作后需要立即获取插入的自增主键值,比如一次操作中保存一对多这种关系的数据,那么就要使用 插入后获取自增主键值 的方式配置.
- 顶
- mybatis自增主键配置
- mybatis 自增主键配置
- mybatis自增主键配置
- mybatis 自增主键配置
- mybatis 自增主键配置
- mybatis自增主键配置
- mybatis自增主键配置
- mybatis 自增主键配置
- mybatis 自增主键配置
- mybatis 自增主键配置
- mybatis详解-(8)配置自增主键
- mybatis获取mysql插入的自增主键配置方法
- mybatis获取自增主键
- mybatis自增主键无效
- mybatis+oracle主键自增
- mybatis设置自增主键
- mybatis mysql 主键自增
- mybatis自增主键设置
- Cocos2d-x系列二:xcode中导入cocos2d_libs到自己项目中
- 一言不合被直播,你成了“楚门”,你知道吗!
- 4.6-全栈Java笔记:THIS关键字和STATIC关键字
- Web前端知识体系精简
- 几种常用的设计模式介绍
- mybatis 自增主键配置
- 23种设计模式-访问者模式
- java-File
- 【JAVA】实现注解拼接SQL+字段进行排序
- 【数据结构基础】校园网布线问题
- struts2学习之---输入校验
- c++11 & c++ <valarray>
- [bzoj1934]: [ZJOI2009]狼和羊的故事
- 教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash