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中insert操作返回主键的实现方法
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="
-
MyBatis insert语句返回主键和selectKey标签方式
目录 insert语句返回主键和selectKey标签 1.主键自增的情况 2.Oracle中用Sequence获取主键 MyBatis insert语句key的生成和返回 1.使用数据库自带的生成器 2.使用selectKey insert语句返回主键和selectKey标签 往数据库中插入一条记录后,有时候我们需要这条记录的主键,用于后续的操作. 如果在插入后再去查一次数据库,显然不够优雅和效率,MyBatis中已经有了insert后返回主键的功能,下面就主要讲几种不同情况的具体做法. 1.
-
Mybatis插入时返回自增主键方式(selectKey和useGeneratedKeys)
目录 Mybatis插入时返回自增主键 Mybatis批量插入返回自增主键 解决办法 Mybatis插入时返回自增主键 通过selectKey在插入操作前或者操作后获取key值,做为字段插入或返回字段.(此段代码获取的序列值id作为字段值插入到实体类中返回) <insert id="insert"> <selectKey keyProperty="id" resultType="int" order="AFTER&qu
-
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="
随机推荐
- VS2015连接Oracle数据库的详细步骤
- Java排序算法之SleepSort排序示例
- Java 8 新特性终极版指南详解
- oracle AWR性能监控报告生成方法
- js代码实现无缝滚动(文字和图片)
- asp.net实现访问局域网共享目录下文件的解决方法
- php jquery 实现新闻标签分类与无刷新分页
- SQLSERVER中忽略索引提示
- Android创建与解析XML(二)——详解Dom方式
- jquery 新手学习常见问题解决方法
- jQuery插件uploadify实现ajax效果的图片上传
- 用javascript实现文本框和"选择"按扭之间的间距
- JavaScript地图拖动功能SpryMap的简单实现
- C#实现基于IE内核的简单浏览器完整实例
- Android中自定义加载样式图片的具体实现
- java网上图书商城(6)订单模块1
- 用.NET创建Windows服务的方法第1/2页
- vue动态改变背景图片demo分享
- JS中双击和单击事件冲突的解决方法
- VUE 实现复制内容到剪贴板的两种方法