Mybatis更新update时返回主键

如何在update后返回主键

工作中遇到更新后想获取主键的操作,不想请求两次数据库,想着update后是否可以返回主键,(insert时是可以直接使用useGeneratedKeys="true" keyProperty="id"返回主键的,但需要通过pojo对象获取主键),于是网上搜索一番终于获得解决办法,在此记录一下。

<update id="updateSelective" parameterType="com.priv.test.pojo.Test">
<selectKey keyProperty='id' resultType='java.lang.String' order='AFTER'>
SELECT
id
from t_test
where uno= #{uno}
</selectKey>
update t_test
set t_id = #{tId,jdbcType=VARCHAR},
state = 2,
update_time = now()
where uno= #{uno}
</update>

2、Java中获取id,如下所示

public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml");
TestMapper mapper = ac.getBean(TestMapper.class);
Test test= new Test();
test.setTId("f59906");
test.setUno("868297");
mapper.updateSelective(test);
System.out.println(test.getId());
}

输出结果

3f2559

SelectKey详解

<selectKey keyProperty='id' resultType='java.lang.String' order='BEFORE'>

此处的 keyProperty=’id’ 是指将查询出来的id 映射到传入updateSelective 的test 的id 。类型为String
order=’BEFORE’ 要在执行update之前进行查询,并把id返回出来, order=‘AFTER’ 在执行玩update之后进行查询,根据个人需求而定。

原文链接:https://blog.csdn.net/u012373815/java/article/details/73864866

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Mybatis是一种流行的ORM(对象关系映射器)框架,它为Java开发者提供了许多便利的API和注解,以简化数据库编程。在Mybatis中,更新数据也是一项常见的任务,而有我们需要在更新数据后返回当前。这样做的好处是可以避免频繁地查询数据库,从而提高程序的性能。 那么,如何在Mybatis中实现更新数据返回当前呢?其实很简单,只需要在Mapper.xml文件中添加useGeneratedKeys和keyProperty属性即可。 useGeneratedKeys属性告诉Mybatis使用数据库自动生成的作为,而keyProperty属性则指定了要返回的名称。例如,如果我们要更新一个用户的信息并返回,可以这样写: ```xml <update id="updateUser" parameterType="User"> update users set name=#{name}, email=#{email}, password=#{password} where id=#{id} </update> ``` ```xml <update id="updateUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> update users set name=#{name}, email=#{email}, password=#{password} where id=#{id} </update> ``` 这样做的好处是可以省去一次查询,在更新后直接返回。但需要注意的是,这种方法只适用于数据库自动生成的,如果我们要使用自定义的,就需要另外的处理方式。 以上就是在Mybatis更新数据返回当前的方法,它不仅可以提高程序的性能,还可以简化程序的逻辑。所以在实际项目中,大家可以尝试使用这种方式来处理更新数据的操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值