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。不同数据库的获取方式可能会有所不同,需要根据具体的数据库类型和版本进行调整。

相关推荐

  1. Mybatis获取

    2024-07-19 14:18:03       39 阅读
  2. mybatis配置获取自增

    2024-07-19 14:18:03       31 阅读
  3. SQL联合

    2024-07-19 14:18:03       51 阅读
  4. MyBatis特殊SQL执行

    2024-07-19 14:18:03       36 阅读
  5. 【第18章】MyBatis-Plus生成策略

    2024-07-19 14:18:03       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 14:18:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 14:18:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 14:18:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 14:18:03       69 阅读

热门阅读

  1. Vue3 完美实现深拷贝

    2024-07-19 14:18:03       22 阅读
  2. 70、Flink 的 DataStream Connector 之 JDBC 连接器详解

    2024-07-19 14:18:03       20 阅读
  3. MySQL简介

    2024-07-19 14:18:03       20 阅读
  4. iOS 左滑返回事件的控制

    2024-07-19 14:18:03       18 阅读
  5. 八段锦1.1.9-冥想1.2.9

    2024-07-19 14:18:03       22 阅读
  6. 邦芒贴士:和领导相处必须牢记的五个教训

    2024-07-19 14:18:03       19 阅读
  7. Binary Search

    2024-07-19 14:18:03       19 阅读
  8. C 语言实例 - 矩阵转换

    2024-07-19 14:18:03       21 阅读
  9. 升级TrinityCore 服务器硬件

    2024-07-19 14:18:03       20 阅读