1. @SelectKey的作用 @SelectKey注解在MyBatis-Plus中的作用是执行一个SQL查询语句,用于在插入或更新操作后获取特定的值,通常用于获取自动生成的主键值。这个注解可以灵活地与@Insert或@Update注解一起使用,确保在数据操作后能够立即获取到所需的值。 2. 使用场景 @SelectKey通常用于以下场景: 在插入数据后获取自动
KeyGenerator接口有三个实现,分别是Jdbc3KeyGenerator、NoKeyGenerator和SelectKeyGenerator。其中NoKeyGenerator为空实现,Jdbc3KeyGenerator用于在执行sql的时候取回生成的id,并将其保存在用户传入的实参中,SelectKeyGenerator用于当前使用的数据库不支持主键自增的场景,用户自己编写sql语句来生成对应的自增id。 KeyGenerator的类图...
而对于不支持自增型主键的数据库(例如Oracle),则可以使用selectKey子元素:selectKey元素将会首先运行,id会被设置,然后插入语句会被调用 <insert id="insertAuthor"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1 </selectKey>...
<selectKey keyColumn="id" keyProperty="id" resultType="int" order="BEFORE"> select XXX.nextval from dual </selectKey> 这是不是很熟悉,就是我们学MyBatis时候学的啊,MyBatis-Plus只不过是把它变成了@KeySequence注解,省去了你写这段xml了而已,而所有问题的源头就来自于这段xml,潘老师亲自测试,在insert...
order属性,取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作。AFTER一般用于Mysql自增的情况下,BEFORE一般用于自定义的ID的获取。 keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是你实体类中,对应数据库的主键id。 最后在实体类中,要...
-- --><selectKeykeyProperty="id"order="AFTER"resultType="java.lang.Long">SELECT LAST_INSERT_ID()</selectKey>insert into ${table.name} ( #foreach($field in ${table.fields}) #if(!${field.keyFlag})##生成普通字段 ${field.name}#if($foreach.hasNext),#end...
order属性,取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作。AFTER一般用于Mysql自增的情况下,BEFORE一般用于自定义的ID的获取。 keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是你实体类中,对应数据库的主键id。
-- --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long"> SELECT LAST_INSERT_ID() </selectKey> insert into ${table.name} ( #foreach($field in ${table.fields}) #if(!${field.keyFlag})##生成普通字段 ${field.name}#if($foreach.hasNext),#end #end #end ) ...
<insert id="insert" parameterType="com.xx.entity.Dept"> <selectKey resultType="int" keyProperty="deptno" keyColumn="deptno" order="AFTER"> select last_insert_id() </selectKey> insert into dept(deptname,loc) values(#{deptname},#{loc}) </insert> 2)配制方式 <insert id="insert" parameter...
</selectKey> INSERT INTO USER (id,username,birthday,sex,address) VALUES(#{id},#{username},#{birthday},#{sex},#{address}) </insert> 1. 2. 3. 4. 5. 6. 7. 8. 9. mysql获取自增主键的值: 它是在插入数据后查,通过LAST_INSERT_ID()查最后一条数据的id。