当遇到要保存一个对象同时要保存多个依赖对象的值时,我们需要在同一个事务中进行处理,那么就需要拿到前一个被依赖对象的ID值,但是事务未提交我们怎么去拿ID呢?下面的例子是mybatis对此类需求的支持:
映射文件:
<!-- 设置keyProperty 跟useGeneratedKeys可以获取自增长的ID 只支持具有自增长方式的那种数据库,如,mysql,sql server(oracle不支持)-->
<insert id="insert" parameterType="Person" keyProperty="id" useGeneratedKeys="true">
insert into t_person(id,t_name,age,birthday) values(#{id},#{name},#{age},#{birthday})
</insert>
测试类:
//通过factory获得数据库连接会话
SqlSession session=factory.openSession();
//插入一个对象(Person)到数据库对应的表中(t_person)
Person p=new Person();