项目场景:
当通过mybatis插入数据后,需要获取插入记录在数据库中生成自增长字段值:
例如:项目场景:订单分客户信息和商品信息,在插入订单客户信息后,需要将订单表中生成的自增id存入到商品信息表中用作关联
解决方案:
程序代码如下:
//order插入前id为空(注:需要先getter和setter)
Order order = new Order();
order.setCusNo("001");
order.setCusName("上海xxxx");
int insert(order);
在Mybatis中的Mapper文件中,添加以下属性“useGeneratedKeys”和“keyProperty”
useGeneratedKeys=true:表示使用数据库自动增长的主键;
keyColumn:用于指定数据库table中的主键;
keyProperty:用于指定传入对象的成员变量。
mapper代码如下:
<insert id="insert" keyColumn="id" keyProperty="id" useGeneratedKeys="true" parameterType="order" >
insert into test(cus_no, cus_name)
values (#{cusNo,jdbcType=VARCHAR}, #{cusName,jdbcType=VARCHAR})
</insert>
当执行完mybatis后,再次查看order的id属性值时,就会看到当前order的id已被赋值