mybatis 主键的特殊要求

这是一条插入语句:

 

        其目的就是为了将这个role对象插入到数据库, 然后他会根据getGeneratedKeys来自动回填id. 

        但是, 实际工作往往不是我们想象的那么简单,需要根据一些特殊的关系设置主键id 的值。 

        假设我们取消表trole 的id自增的规则,我们的要求是:如果表trole 没有记录,则我们
需要设置 id=1,否则我们就取最大id加 2,来设置新的主键,对于一些特殊要求,MyBatis
也提供了应对方法。

        使用如下方法:

        在 MyBatis 中,<selectKey> 标签用于在执行插入语句(insert)后获取数据库生成的主键值或者其他由数据库生成的值。这在需要将插入生成的值立即用于后续操作时非常有用。以下是 <selectKey> 标签的详细用法:

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
    INSERT INTO users (username, password)
    VALUES (#{username}, #{password})
    
    <selectKey keyProperty="id" resultType="int" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>
  • <insert> 标签中使用 <selectKey>

    • <insert> 标签定义了插入操作,通常会使用 parameterType 指定参数类型,并设置 useGeneratedKeys="true" 来告诉 MyBatis 使用数据库生成的键。
    • <insert> 内部,可以使用 <selectKey> 标签来获取生成的键值。
  • keyProperty 属性

    • keyProperty 指定了插入操作后,将生成的键值设置到哪个属性中。这个属性通常是你的实体类中对应的字段。
  • resultType 属性

    • resultType 指定了返回的结果类型。通常是主键的类型,比如 intlong 等。
  • order 属性

    • order 属性指定了 <selectKey> 的执行顺序,可以是 BEFOREAFTER。在大多数情况下,使用 AFTER,表示在插入语句执行完成后执行 <selectKey> 来获取生成的键值。
  • SQL 语句

    • <selectKey> 标签内部,可以编写 SQL 查询语句来获取生成的键值。在 MySQL 中,通常使用 SELECT LAST_INSERT_ID() 来获取最后插入行的自动生成的 ID。不同数据库的获取方式可能会有所不同,需要根据具体的数据库类型和版本进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值