Mybatis - useGeneratedKeys 和 keyProperty,获取插入主键自动生成的 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>
- useGeneratedKeys:用于指示是否使用数据库生成的主键值。如果设置为 true,那么数据库会自动生成主键值,通常是通过数据库的自增字段实现。如果设置为 false,则不会使用数据库生成的主键值。
- keyProperty:用于指定一个 Java 对象的属性名,这个属性会用来存储数据库生成的主键值。该属性需要与实体类的属性名对应。
如上 xml 代码块,插入语句中参数类型是 PayForData 实体类:
@Data
public class PayVo {
private Integer id;
private Integer uid;
private Double total;
private String location;
private String holderPhone;
private String holderName;
}
keyProperty 设置的就是这个实体类的某一个属性。在使用 mybatis 插入这条数据之后,这个实体类 id 就会有值了,就可以获取到数据库自增 id 的值,可以进入下一个事务。