MyBatis如何使用selectKey返回主键的值
目录
- 使用selectKey返回主键的值
- 对于MySQL数据库
- 通过selectkey返回insert或update后的值
- @selectKey使用
- 方案1
- 方案2
使用selectKey返回主键的值
使用<selectKey>标签来获取插入操作主键返回的值。
对于MySQL数据库
<insert id="insert"> insert into user( username, password, email, info, headImg, createTime) values( #{username}, #{password}, #{email}, #{info}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP}) <selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert>
通过selectkey返回insert或update后的值
实体类如下:
表结构如下:
其中varId为主键,但非自增
@selectKey使用
@selectKey
statement
:指定查询的语句keyProperty
:指定结果对应的实体类的字段,如果是多个字段,采用逗号,分隔。如varId,varName,keyColumn
:指定stament语句返回的列明,与keyProperty对应,如果多个,采用逗号分隔。resultType
:返回值类型before
:ture,插入前执行,false插入后执行
插入时,如何查询当前最大id,并赋值给实体类,示例如下:
方案1
插入前,首先查询当前最大的id,并赋值给实体对象
如下:
方案2
插入时,获取当前最大值,插入
插入后,查询当前最大的id,并赋值给实体对象。
如下:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Mybatis示例之SelectKey的应用
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. SelectKey需要注意order属性,像Mysql一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值. 像Oracle这样取序列的情况,需要设置为before,否则会报错. 下面是一个xml和注解的例子,SelectKey很简单,两个例子就够了: <insert id=&quo
-
Mybatis插入时返回自增主键方式(selectKey和useGeneratedKeys)
目录 Mybatis插入时返回自增主键 Mybatis批量插入返回自增主键 解决办法 Mybatis插入时返回自增主键 通过selectKey在插入操作前或者操作后获取key值,做为字段插入或返回字段.(此段代码获取的序列值id作为字段值插入到实体类中返回) <insert id="insert"> <selectKey keyProperty="id" resultType="int" order="AFTER&qu
-
MyBatis insert语句返回主键和selectKey标签方式
目录 insert语句返回主键和selectKey标签 1.主键自增的情况 2.Oracle中用Sequence获取主键 MyBatis insert语句key的生成和返回 1.使用数据库自带的生成器 2.使用selectKey insert语句返回主键和selectKey标签 往数据库中插入一条记录后,有时候我们需要这条记录的主键,用于后续的操作. 如果在插入后再去查一次数据库,显然不够优雅和效率,MyBatis中已经有了insert后返回主键的功能,下面就主要讲几种不同情况的具体做法. 1.
-
MyBatis中insert操作返回主键的实现方法
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="
-
MyBatis如何使用selectKey返回主键的值
目录 使用selectKey返回主键的值 对于MySQL数据库 通过selectkey返回insert或update后的值 @selectKey使用 方案1 方案2 使用selectKey返回主键的值 使用<selectKey>标签来获取插入操作主键返回的值. 对于MySQL数据库 <insert id="insert"> insert into user( username, password, email, info, hea
-
MyBatis insert实体如何返回主键
目录 insert实体如何返回主键 一.insert 属性详解 二.Mapper接口 三.执行mapper.xml 返回主键 四.测试结果 六.批量插入 七.小结一下 Mybatis添加记录,返回主键id insert实体如何返回主键 一.insert 属性详解 parameterType:入参的全限定类名或类型别名 keyColumn:设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty:默认值unset,用于设置
-
Mybatis批量插入并返回主键id的方法
目录 场景 错误 分析原因 排查问题 场景 在做商城的时候,sku表进行了拆分,sku的基本信息以及sku的库存表.因为库存会经常的变动,会导致行锁. 这里就是新增的时候,因为在新增商品的时候,会有多条sku的数据进行批量的插入,那么有批量插入sku基本信息以及批量插入sku的库存信息. 其中,就需要批量插入sku的基本信息的时候,返回主键id,这就能够在sku批量插入库存信息的时候能够插入skuId: 错误 nested exception is org.apache.ibatis.execu
-
Mybatis批量插入数据返回主键的实现
响应效果(id为主键): { "data": [ {"studentName": "张三","classNo": "一班","id": 111}, {"studentName": "李四","classNo": "二班","id": 112}, {"studentName&quo
-
mybatis实现批量插入并返回主键(xml和注解两种方法)
目录 mybatis批量插入并返回主键(xml和注解两种方法) mybatis批量插入 xml形式 注解形式 mybatis批量插入并返回主键笔记 mapper中的代码 xml中的代码,collection必须填list类型 mybatis批量插入并返回主键(xml和注解两种方法) mybatis批量插入 在mysql数据库中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主键了. 比如有个表camera,里面有cameraNo,chanIn
-
MyBatis在insert插入操作时返回主键ID的配置(推荐)
很多时候,在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键. 但是,在默认情况下,insert操作返回的是一个int值,并且不是表示主键id,而是表示当前SQL语句影响的行数... 接下来,我们看看MyBatis如何在使用MySQL和Oracle做insert插入操作时将返回的id绑定到对象中. MySQL用法: <insert id="insert" parameterType="com.test.User&qu
-
详解Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:
-
mybatis insert返回主键代码实例
这篇文章主要介绍了mybatis insert返回主键代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作. 使用ibatis的selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作方式. 对于oracle: <insert id="
随机推荐
- AngularJS 过滤器(自带和自建)详解
- AngularJS 路由详解和简单实例
- jQuery查找节点并获取节点属性的方法
- 关于JavaScript中的this指向问题总结篇
- 需要做特殊处理的DOM元素属性的访问
- vbScript中WScript.Shell对象的run和exec使用心得分享
- 批处理 文件归类整理器(当面目录)
- php使用Session和文件统计在线人数
- PHP图片库imagemagick安装方法
- php实现ip白名单黑名单功能
- css ie6 ie7 ff的CSS hack使用技巧
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- sql server不存在 sql server拒绝访问第1/3页
- C#实现TIF图像转PDF文件的方法
- 通过Html网页调用本地安卓(android)app程序代码
- 创建并运行一个java线程方法介绍
- Android中如何实现清空搜索框的文字
- 仿iPhone风格对话框(附件包含例子/jar包/jar包源码)
- Android ListView与RecycleView的对比使用解析
- 微信小程序云开发之数据库操作