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 keyProperty="id" resultType="java.lang.Long" order="BEFORE"> select nvl(max(id),0)+1 from T_USER </selectKey> insert into T_USER <trim prefix="(" suffix=")" suffixOverrides=","> ID, <if test="name != null"> F_NAME, </if> <if test="age != null"> F_AGE, <...
mybatis-plus 获取新增id <insert id="insert" parameterType="com.xxx.xxxx.pojo.User"> insert into t_user (name) values (#{user.name}) <selectKey resultType="Integer" order="AFTER" keyProperty="user.userId"> SELECT LAST_INSERT_ID() AS userId ...
<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。 最后在实体类中,要...
selectKey 标签 在insert语句中,在Oracle经常使用序列、在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键。使用myBatis的selectKey标签可以实现这个效果。 下面例子,使用mysql数据库自定义函数nextval('student'),用来生成一个key,并把他设置到传入的实体类中的studentId属性上。所以在执行完此方法...
<selectKey keyProperty="id" resultType="int" order="AFTER"> select LAST_INSERT_ID() </selectKey> insert into user (id,name,password) values (#{id},#{name},#{password}) 小结:第一种方式是推荐的使用方式,第二种方式是执行<selectKey>标签中的语句获取到一个id后。在执行下方的插入语句,第二种...
但是,需要注意的是,当不需要返回插入数据的主键时,可以和@Select一样操作,但是如果需要返回自增的主键或返回非自增的主键的时候,就需要使用@Options和@Selectkey注解。 不需要返回主键时: //不需要返回主键的插入 @Insert({"insert into t_role(id,role_name,enabled,create_author,create_time) " +...