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

发布时间 2023-08-29 16:37:27作者: Himmelbleu
<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 的值,可以进入下一个事务。