• 使用mybatis-generator生成的mapper执行insert时获取主键id


    有时候,我们在往mysql数据库插入一行数据的同时,想要知道这一行数据的主键id。mybatis提供了2种获取自增主键的方式:一种是,另一种是使用这三个属性: useGeneratedKeys、keyProperty、keyColumn
    在使用mybatis-generator 插件自动生成mapper.xml文件时,它们的配置示例分别如下:
    在 table属性中做如下配置:
    <generatedKey column="id" sqlStatement="JDBC" identity="true"/>
    生成的mapper xml文件关于Insert的语句如下:

    INSERT INTO user(name, age) VALUES(#{name}, #{age}) ;

    在table中配置:
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
    生成的mapper xml文件关于Insert的语句如下:

      INSERT INTO user(`name`, `age`) VALUES(#{name}, #{age}) ;
      <selectKey resultType="int" keyProperty="id">
          SELECT LAST_INSERT_ID()
      </selectKey>
    
    看mybatis-generator 关于generatedKey的[官方文档](https://mybatis.org/generator/configreference/generatedKey.html )关于 sqlStatement 设置为Mysql 或者 JDBC 的解释其实并不是很清楚知道这2者之间的差别。 我觉得:如果是使用Mysql数据库,并且 数据库的表 配置了 自增主键(auto increment),那么是可以将 sqlStatement 配置成 JDBC 的。因为: > mybatis的 SelectKey 属性 本身是为了不支持返回自动生成主键的数据库而提供的,而且 通过 SelectKey 获取主键id,整个过程是:先 insert记录,再 `SELECT LAST_INSERT_ID()` ,这是两条SQL语句,要注意并发问题。
  • 相关阅读:
    UVA 10305 Ordering Tasks(拓扑排序)
    UVA 1152 4 Values whose Sum is 0(中途相遇法)
    UVA 1103 Ancient Messages
    HDU 2141 Can you find it?
    POJ 2456 Aggressive cows(二分+贪心)
    Tallest Cow【模拟】
    Tallest Cow【模拟】
    激光炸弹【模拟】
    激光炸弹【模拟】
    激光炸弹【模拟】
  • 原文地址:https://www.cnblogs.com/hapjin/p/13617441.html
Copyright © 2020-2023  润新知