首页 > 其他分享 >Mybatis - useGeneratedKeys 和 keyProperty,获取插入主键自动生成的 Id

Mybatis - useGeneratedKeys 和 keyProperty,获取插入主键自动生成的 Id

时间:2023-08-29 16:48:28浏览次数:34  
标签:keyProperty 实体类 useGeneratedKeys 数据库 private id 键值 主键

<insert id="insertOrder" parameterType="com.buchstadt.params.PayForData" useGeneratedKeys="true"
        keyProperty="id">
    INSERT INTO orders(user_id, total, location, holder_phone, holder_name)
    VALUES (#{user_id}, #{total}, #{location}, #{holderPhone}, #{holderName})
</insert>
  1. useGeneratedKeys:用于指示是否使用数据库生成的主键值。如果设置为 true,那么数据库会自动生成主键值,通常是通过数据库的自增字段实现。如果设置为 false,则不会使用数据库生成的主键值。
  2. keyProperty:用于指定一个 Java 对象的属性名,这个属性会用来存储数据库生成的主键值。该属性需要与实体类的属性名对应。

如上 xml 代码块,插入语句中参数类型是 PayForData 实体类:

@Data
public class PayForData {
    private Long id;
    private Long uid;
    private Double total;
    private String location;
    private String holderPhone;
    private String holderName;
}

keyProperty 设置的就是这个实体类的某一个属性。在使用 mybatis 插入这条数据之后,这个实体类 id 就会有值了,就可以获取到数据库自增 id 的值,可以进入下一个事务。

标签:keyProperty,实体类,useGeneratedKeys,数据库,private,id,键值,主键
From: https://www.cnblogs.com/Himmelbleu/p/17665226.html

相关文章

  • MyBatis-Plus通过注解设置主键自增策略
    MySQL数据库使用自增列(AutoIncrementColumn)MySQL支持自增列,这是一种方便的方式来生成主键值。在MyBatis-Plus中,你可以使用@TableId(type=IdType.AUTO)注解来指定自增列作为主键生成策略。首先,确保你的MySQL表中已经设置了自增列。例如:CREATETABLEyour_table_name......
  • 数据库中什么是主键
    在数据库中,主键就像是每个记录的独特标识符,就像每个人都有自己的名字一样。它帮助区分不同的记录,就像名字帮助我们区分不同的人一样。想象一下,你有一个装满了糖果的罐子。为了区分每颗糖果,你会给每颗糖果贴上一个标签,上面写着它的名字或编号。这个标签就像是糖果的主键,确保每颗糖......
  • 数据库主键生成策略
    首先明确的一点是,主键是为了区分不同的行记录,所以先抛开其他的因素,主键必须要保证:唯一性(单表或者分库分表的场景下)单表可选的方案有:自增idUUID业务字段,如:手机号、身份证号等等自增id自增主键是单表中很常用的使用方式。阿里Java开发中规定,表必备三字段:id,gmt_create,gmt......
  • 数据库 自增主键插入数据
    1. 现在报错是因为这个自增主键冲突了:id你先把之前的delete了,该插入的SQL应该是这样,你看看有没有问题INSERTINTO"public"."tmall_aggregate_item"("create_time","last_update_time","color_name","product_id","tenant_id","......
  • mysql insert出现主键冲突错误的解决方法
    mysqlinsert出现主键冲突错误的解决方法insert时防止出现主键冲突错误的方法在mysql中插入数据的时候常常因为主键存在而冲突报错,下面有两个解决方法:1在insert语句中添加ignore关键字insertignoreintotable(id,name)values('1','username');这是如果id主键已经存......
  • MySQL-进阶篇 ( SQL 优化:插入 + 主键 + order by + group by + limit + count + updat
    MySQL-进阶篇(SQL优化)目录MySQL-进阶篇(SQL优化)SQL优化插入数据index批量插入手动提交事务主键插入大批量插入数据主键优化页分裂页合并主键设计原则orderby优化Usingfilesort:Usingindex:优化注意:groupby优化未创建索引时:创建索引后:优化limit优化count优化一......
  • mysql与pg的主键索引说明
    mysql与pg的主键说明mysql插入顺序与插入随机测试案例B+Tree原理id顺序的方式插入id随机的方式插入Postgresql堆组织表CTIDPg的元组及索引原理Pg与mysql与oracel问题mysql插入顺序与插入随机测试案例  创建了两张表一张表是按顺序来插入的一张表......
  • springboot~mybatis中使用selectKey获取自增主键
    在mybatis中,我们在insert操作之后,可以获取到自增主键的值,这个需要我们用到这个方法,在使用时有一个坑需要注意,一会儿会说到。假设我们有数据表id_offset,然后id是自增主键我们在插入数据后,希望得到这个新插入的主键的值我们不希望通过两条语句实现,因为这样在并发时会有问题数......
  • 解决业务中,要插入数据库,获取到插入数据的主键来进行后续操作
    在项目中经常需要获取到插入数据的主键来保障后续操作,数据库中主键一般我们使用自增或者uuid()的方式自动生成,问题:对于uuid使用Java代码生成的方式还比较容易控制,但是如果主键必须用int或Long,使用数据库生成的主键比较简便,这样我们就需要将插入的数据再查询出来得到主键,某些情况下......
  • mp-主键策略的学习
    自增主键@auto,要让插入的数据id自增需要使用注解该注解在实体类中添加@TableId(type=IdType.AUTO)注解然后在测试类中直接设置user属性值,使用方法insert插入即可。注意:需要在表中设置自增,切将自增的值与数据表中的主键值对应 @INPUT注解手动插入主键属性,同自增一样,在实体类......