<selectKey>标签详解

本文详细介绍了MyBatis中<selectKey>标签的使用方法,通过示例解释了如何在插入数据后获取自增主键的Id值,避免了额外查询的步骤。内容包括resultType、keyProperty和order属性的含义及其在实际操作中的应用。通过一个测试案例展示了标签启用前后的效果对比,进一步阐明了该标签在简化开发过程中的重要作用。
摘要由CSDN通过智能技术生成

作用:获取主键自增的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值的麻烦。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值