有时候我们不仅仅是通过返回 int 影响行数来确定数据是否插入成功就行了,因为我们总是会用到这个刚刚插入的自增主键,比如主子表入库,子表需要主表的 id,那这个时候我们再去数据库查就显得有点 low 了~
关于数据库中主键的生成无非就两种,一种是 int 类型的自增,一种是 varchar 类型的非自增(例如:UUID)。
在 Mybatis 中,提供了 selectKey 来帮我们获取新增的主键,同时通过 selectKey 可以很容易的实现自增还是非自增规则的需求。
下面从 Oracle 跟 MySQL 分别举例说明。
Oracle
<insert id="insertUserInfo" parameterType="club.sscai.entity.UserInfo">
<selectKey keyProperty="id" resultType="java.lang.Integer" order="BEFORE">
select SEQ_T_USER_INFO.NEXTVAL from dual
</selectKey>
insert into "T_USER_INFO"
<trim prefix="(" suffix=")" suffixOverrides=",">
ID,USER_NAME,PASSWORD,PHONE,STATUS,
<if test="remark != null">
REMARK,
</if&g