在使用Mysql、pgsql等数据库时常用使用id自增长的方式来控制id数值;在使用插件书写调用时通常可以自动返回增长的id值,但在自己书写是应当如何处理?
在MyBatis中,如果你想要在执行插入操作后获取自动生成的主键(如MySQL中的自动增长ID),你需要在对应的mapper.xml文件中的<insert>标签里配置以下属性:
<insert id="insertProduct" parameterType="com.example.Product" useGeneratedKeys="true" keyProperty="id">
INSERT INTO product (name, description) VALUES (#{name}, #{description})
</insert>
这里有几个关键点:
useGeneratedKeys="true":设置为true表示启用JDBC的getGeneratedKeys方法来获取由数据库自动生成的主键。
keyProperty="id":指定哪个属性将接收生成的主键值。这里的"id"应该对应于传入参数对象(例如Product)中与数据库表主键字段相对应的属性名。
这样,在执行insertProduct方法之后,新插入记录的自增ID会自动填充到传入的Product实体类的id属性上,你可以在调用Mapper方法后的Java代码中通过product.getId()来获取这个ID。
代码参考:
//执行插入
productMapper.insertProduct(product);
//完成插入后便可以通过实体对象获取id值
product.getId();
通过以上方法进行配置即可完成获取数据库设置id自动增长(序列)的id在插入或获取。