SELECT LAST_INSERT_ID()resultType:主键的数据类型keyProperty:主键的名称(与数据库对应)order:有两种,主键自增写AFTER,即在SELECT LASTINSERTID() 在insert执行之后执行,用于获取自增的主键值。B_selectkey标签">
赞
踩
作用:获取主键自增的Id值
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
resultType:主键的数据类型
keyProperty:主键的名称(与数据库对应)
order:有两种,主键自增写AFTER,即在SELECT LASTINSERTID() 在insert执行之后执行,用于获取自增的主键值。BEFORE表示SELECT LASTINSERTID() 在insert执行之前执行,这样的话就拿不到主键了,这种适合那种主键不是自增的类型resultType 主键类型。
举个栗子(我举一花生!我举一蚕豆!去你的吧!)
mapper.xml
<insert id="insert" parameterType="Article" >
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into article ( cover_image, category_id,
status, title, content,
view_count, created_at, updated_at
)
values (#{coverImage,jdbcType=VARCHAR}, #{categoryId,jdbcType=INTEGER},
#{status,jdbcType=TINYINT}, #{title,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR},
#{viewCount,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}
)
</insert>
test
@Test
void contextLoads2() {
Article article = new Article();
article.setTitle("跟着小张学java");
System.out.println("insert执行之前的Id值:"+article.getId());
int insert = aritcleMapper.insert(article);
System.out.println(insert);
System.out.println("insert执行之后的Id值:"+article.getId());
}
这是把标签注掉的结果,Id值是拿不到的。
这是加上标签的结果
懂了吗?简单来说就是加上标签可以取得自增主键的值,省去添加完数据还要重新查询一次Id值的麻烦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。