mybatis如何获取oracle新插入数据记录的主键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis如何获取oracle新插入数据记录的主键?相关的知识,希望对你有一定的参考价值。

参考技术A insert
into
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 如何获得新插入记录的id

Oracle怎么得到刚刚新插入数据库那条记录的id

mybatis批量插入oracle大量数据记录性能问题解决

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录

如何获取新插入Oracle数据库Sequence值的5种方法

Mybatis批量插入Oracle