SELECT LAST_INSERT_ID()resultType:主键的数据类型keyProperty:主键的名称(与数据库对应)order:有两种,主键自增写AFTER,即在SELECT LASTINSERTID() 在insert执行之后执行,用于获取自增的主键值。B_selectkey标签">
当前位置:   article > 正文

<selectKey>标签详解_selectkey标签

selectkey标签

作用:获取主键自增的Id值

<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
    SELECT LAST_INSERT_ID()
</selectKey>
  • 1
  • 2
  • 3

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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());

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这是把标签注掉的结果,Id值是拿不到的。
在这里插入图片描述

这是加上标签的结果
在这里插入图片描述

懂了吗?简单来说就是加上标签可以取得自增主键的值,省去添加完数据还要重新查询一次Id值的麻烦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/241403
推荐阅读
相关标签
  

闽ICP备14008679号