BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #50585同步于 2016/5/26
Java机器人发帖

【求助】spring+mybatis更新操作不返回主键id

zhzwill369
2016/5/26镜像同步0 回复
我在update的时候对应的实例类并没有主键id,希望在update之后可以获取实例类的主键id,但是若update内容没有任何变化,则实例类的主键id是null,update内容有变化的情况下实例类的主键id才为对应主键id,代码如下所示: <mapper namespace="com.meituan.service.mobile.meilv.dal.dao.mapper.ABCTestMapper"> <sql id="generalSelectColumns"> id as id, a as a, b as b, c as c </sql> <sql id="generalSelectPrefix"> SELECT <include refid="generalSelectColumns"/> FROM abctest </sql> <insert id="insertOne" parameterType="com.meituan.service.mobile.meilv.dal.dao.bean.ABCTestDO" useGeneratedKeys="true" keyProperty="id"> insert into abctest( a, b, c ) values( #{a}, #{b}, #{c} ) on duplicate key update a = #{a}, b = #{b}, c = #{c} </insert> <select id="selectOne" resultType="com.meituan.service.mobile.meilv.dal.dao.bean.ABCTestDO"> <include refid="generalSelectPrefix"/> <where> id=#{id} </where> </select> </mapper> 测试代码: @Test public void testUpdate() throws Exception { ABCTestDO abcTestDO = abcTestMapper.selectOne(1); abcTestDO.setId(null); abcTestMapper.insertOne(abcTestDO); Assert.assertTrue(abcTestDO.getId() == null); abcTestDO.setC(100); abcTestMapper.insertOne(abcTestDO); Assert.assertTrue(abcTestDO.getId().equals(1)); } 可能是mysql的update操作row affected导致的,哪位大神可以详细说一下为什么吗?
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。