很多业务中,都需要知道刚刚新增的这笔数据中,自增主键是多少。Mybatis有很简便的方式能给实现此需求。
方式一:
<insert id="insert" parameterType="com.a.b.bean.app">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
# 新增逻辑
</insert >
keyProperty属性:表示要查询的主键的名字;
order属性:含AFTER,BEFORE,必须大写。
after表示在insert之后执行SELECT LAST_INSERT_ID(),一般用于主键自增时,得到的就是自增长生成的id;而before表示在insert之前执行SELECT LAST_INSERT_ID(),一般用于非自增主键,得到的是传入的对象中主键的值。
resultType属性: 主键的属性。
方式二:
<insert id="id" parameterType="com.a.b.bean.app" useGeneratedKeys="true" keyProperty="id">
insert into app values(#{id},#{app})
</insert>
useGeneratedKeys: 设置是否使用 jdbc的getGeneratedKeys方法获取主键并赋值到keyProperty中;
keyProperty: 实体类中主键的名字。