mybatis如何获取oracle新插入数据记录的主键?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis如何获取oracle新插入数据记录的主键?相关的知识,希望对你有一定的参考价值。
参考技术A insertinto
user(userName,password,comment)
values(#userName,#password,#comment)
User
user
=
new
User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());
User
user
=
new
User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());
输出:
插入前主键为:0
插入后主键为:15 参考技术B 因为cursor(游标)的作用是逐行处理数据直至游标结束,
而楼主这段代码在每次抽取完一行后,立即更新fund_lanmu字段,直至游标结束,所以,楼主的testfund表中fund_lanmu字段最后呈现结果为楼主设计的游标最后抽取的那一行。
若楼主的意思是根据每行fund_createtime值不同,设定每行的fund_lanmu,
需要楼主确定”fund_createtime“是属于testfund表中的某一字段还是别的什么,否则,不能准确给出需要修改的sql语句,同时,需要楼主确认是否"根据每行fund_createtime值不同,设定每行的fund_lanmu",谢谢!
MyBatis中如何获取刚插入数据的 id
一、MyBatis中如何获取刚插入数据的 id
情景:
三张表
1、生成订单 (easybuy_order)
2、生成订单明细 (easybuy_order_detail)
3、更新商品库存 (easybuy_product)
在通过调用相应的 DAO 接口方法来实现对三张表的更新操作,并且这三步操作也是前后关联的,后一步的操作依托于上一步操作的结果,如第一步生成订单 (即在订单主表(easybuy_order)新增一条数据)之后需要获取到新增订单数据的 id 作为下一步生成订单明细的 orderId。
在 : orderDetail.setOrderId(order.getId()); 一步中 order.getId() 会报空指针错误。
析:原因是 order.getId() 为空,故报空指针异常
那么在MyBatis 中,当往Mysql 数据库中插入一条记录后,如何获取该条记录的 id (即自增主键值)?
解决方案:在OrderMapper.xml中指定 keyProperty 属性,代码如下:
<insert id="add" parameterType="order" useGeneratedKeys="true" keyProperty="id"> insert into easybuy_order(userId,loginName,userAddress,createTime) values(#{userId},#{loginName},#{userAddress},#{createTime}) </insert>
如上所示,我们在 insert 中首先设置 useGenerateKeys="true",然后指定keyProperty="id", id代表插入的Order 对象的主键属性。
以上是关于mybatis如何获取oracle新插入数据记录的主键?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录