您的位置:首页 > 其它

MyBatis获取Id自增长的值

2011-07-16 16:23 162 查看
当遇到要保存一个对象同时要保存多个依赖对象的值时,我们需要在同一个事务中进行处理,那么就需要拿到前一个被依赖对象的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(); p.setName("张总"); p.setAge(43); p.setBirthday(new Date()); //将对象持久化到数据库中 //需要通过PersonMapper中定义的sql语句完成一个映射过程 try{ //p.setId(i); session.insert(Person.class+".insert",p); System.out.println(p.getId()); session.commit(); }catch(Exception e){ session.rollback(); e.printStackTrace(); }finally{ session.close(); } 通过测试,在事务提交之前能正常拿到Id值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: