SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。...使用mybatis的selectKey就可以得到sequence的值,同时也会将值返回。不过对于不同的数据库有不同的操作方式。...如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。...SelectKey需要注意order属性,像MySQL一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。...IDENTITY() selectKey> 上面xml的传入参数是map,selectKey会将结果放到入参数map中。
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。...Mapper(Oracle) selectKey resultType...java.lang.String" order="BEFORE" keyProperty="id"> select wxsh_seq.nextval as id from dual selectKey
一种:使用子元素selectKey标签执行sql语句获取。 标签的使用 selectKey 通过前置或后置操作,返回数据的主键值。...插入记录并返回主键主要是在标签中添加一个selectKey> selectKey>的作用主要就是为了返回插入记录后,自动生成的主键信息 order 表示执行的顺序。...selectKey> insert into t_user(last_name,sex) values(#{lastName},#{sex}) selectKey 返回Oracle...dual selectKey>
其实可以通过 mybatis 的 selectKey 标签来解决这个问题。 selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。...如: selectKey resultType="int" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID()...selectKey> insert into …… resultType :返回的类型,为简单类型。 ...此处用法用法就是当 insert into 执行后 执行 selectKey 的内容将数据库的最后一个id 查询出来映射到传入数据对像的ID 属性。...原理 selectKey keyProperty='id' resultType='int' order='BEFORE'> 此处的 keyProperty=’id’ 是指将查询出来的id
其实可以通过 mybatis 的 selectKey 标签来解决这个问题。 selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。...如: selectKey resultType="int" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID()...selectKey> insert into …… resultType :返回的类型,为简单类型。 ...此处用法用法就是当 insert into 执行后 执行 selectKey 的内容将数据库的最后一个id 查询出来映射到传入数据对像的ID 属性。 写更新语句,并将更新的纪录的ID 返回出来。...原理 selectKey keyProperty='id' resultType='int' order='BEFORE'> 此处的 keyProperty=’id’ 是指将查询出来的id 映射到传入
如果你在元素中使用selectKey>节,你就能获得一个预先生成的key.。下面的例子演示了这种方法: selectKey...resultClass="int" Property="id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL selectKey...resultClass="int" Property="id" > SELECT @@IDENTITY AS ID selectKey> ...> selectKey>节返回一个从sql server生成的自动生成关键字。
一、使用selectKey>元素 selectKey>元素来获取主键值。...-- 指定databaseId表示使用oracle数据库查询不同 --> selectKey resultType="java.lang.Long" keyProperty="id" order...接着,在insert语句中,我们使用了selectKey>元素来获取自动生成的主键值。...其中resultType属性指定了返回值类型,keyProperty属性指定了需要设置主键值的对象属性名,order属性则指定了selectKey>执行的时间点(before/after)。...总之,在MyBatis中获取自动生成的主键值可以通过selectKey>和useGeneratedKeys属性两种方式实现。
selectKey keyProperty=...否则selectKey的结果没法保存,如果入参是个Map类型,就没有这个限制。...3.这种方式只是利用了selectKey会多执行一次查询来实现的,但是如果你同时还需要通过selectKey获取序列或者自增的id,就会麻烦很多(oracle麻烦,其他支持自增的还是很容易),例如我在上一篇中利用...selectKey 获取主键Id。...4.建议单独查看学习一下selectKey的用法。
写上 selectKey resultType="String" order="BEFORE" keyProperty="enterp_no"> SELECT...PRSP_CRM_ENTERP_ID.nextval FROM DUAL selectKey> 其中:PRSP_CRM_ENTERP_ID.nextval 是oracle...不要采坑 mysql 中 如下: selectKey resultType...java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() AS ID selectKey...operationTime}, #Xml代码 insert id="insert" parameterType="cn.***.beans.LogObject" > selectKey
selectKey keyProperty="userId..." order="AFTER" resultType="java.lang.Integer"> select LAST_INSERT_ID() selectKey...order:selectKey> 标签内的sql语句相对于insert语句的执行顺序,AFTER表示select LAST_INSERT_ID() 这个语句将在insert语句之后执行。... selectKey keyProperty="...userId" order="BEFORE" resultType="java.lang.String"> select UUID() selectKey>
1.useGeneratedKeys 设置主键自增 2.使用selectKey 查询主键 我们知道很多时候我们有一个需求,我们需要把插入数据后的id返回来,以便我们下一次操作。...="int" keyProperty="id" order="AFTER"> select @@identity selectKey> select LAST_INSERT_ID() selectKey> 两种方式的结果: 注意要点: 1.最外层的没有返回属性(resultType),但是里面的selectKey>selectKey>是有返回值类型的...2.order="AFTER"表示先执行插入,之后才执行selectkey语句的。
例子 selectKey keyProperty="count" resultType="int" order="BEFORE">...select count(*) from country where id = #{id} selectKey> 0"> update country...{countryname},#{countrycode}) csdn上的代码,唯一必须注意的是 keyProperty="count" ,要在实体类dto里面有 selectKey...keyProperty="count" resultType="int" order="BEFORE"> select count(*) from country where id = #{id} selectKey
5.实体类中id属性字段一定需要set以及get方法 [20201205213916.png] 使用selectKey 查询主键 select @@identity selectKey> select LAST_INSERT_ID() selectKey> 两种方式的结果: 注意要点: 1.最外层的没有返回属性(resultType),但是里面的selectKey>selectKey>是有返回值类型的...2.order="AFTER"表示先执行插入,之后才执行selectkey语句的。
resultType="_long" keyProperty="id" order="AFTER"> select @@IDENTITY as id selectKey> insert...五、 selectKey子元素 详解 作用:在insert元素和update元素中插入查询语句。 ...其属性如下: keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中 resultType ,keyPropety...所指向的属性类全限定类名或类型别名 order属性 ,取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作 statementType ,取值范围STATEMENT...,PREPARED(默认值),CALLABLE 注意:selectKey操作会将操作查询结果赋值到insert元素的parameterType的入参实例下对应的属性中。
resultType="java.lang.Long" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() selectKey...传入的参数必须为对象,不能为String int 之类的单个参数 order属性,取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作。...keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是你实体类中,对应数据库的主键id。...} 1.2、使用UUID自增主键 selectKey...keyProperty="id" order="BEFORE" resultType="String"> select uuid() selectKey> INSERT
keyProperty (仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey...子标签,selectKey标签内的语句可以设置运行顺序,是先执行还是后执行;设置为先执行则可以先查出最大的id,进行+1操作,然后在赋值给新插入的id。...selectKey标签有以下属性 属性 描述 keyProperty selectKey 语句结果应该被设置到的目标属性。如果生成列不止一个,可以用逗号分隔多个属性名称。...如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 中的语句 - 这和 Oracle 数据库的行为相似,在插入语句内部可能有嵌入索引调用。...id主键值 selectKey order="BEFORE" resultType="integer
void add(@Param("user")User user); 方法一: selectKey...java.lang.String" order="AFTER" keyProperty="user.id"> SELECT LAST_INSERT_ID() selectKey...selectKey resultType="java.lang.String" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID...() selectKey> 方法二: <insert id="add" parameterType="com.java4all.User" useGeneratedKeys="true" keyProperty
bean 中对应的id属性名,我这里用的是userId // resultType="java.lang.String" 是你java bean 中对应的id属性类型,我这里用的是String类型 selectKey...resultType="java.lang.String" order="AFTER" keyProperty="userId"> SELECT LAST_INSERT_ID(); selectKey...com.test.User"> insert into user(loginName,loginPwd) values(#{loginName},#{loginPwd}); selectKey...java.lang.String" order="AFTER" keyProperty="userId"> SELECT LAST_INSERT_ID(); selectKey
领取专属 10元无门槛券
手把手带您无忧上云