Mybatis获取插入的自增id_Mybatis插入保存数据时返回自增id
2017-11-02 15:07:41  By: shinyuu

鉴于昨天有 DD记账 的用户反馈bug,今天就马不停蹄的来修改了,在修改的过程中遇到这样一个问题。就是在同步账本记录的时候要在客户端保存服务器的id,那么这样的话就需要在服务器同步的吧id返回到服务器。鉴于我用的 MyBatis,最后经过查询文档最终解决了这个问题,现在记录一下,希望对大家有用。


1、添加属性“useGeneratedKeys”和“keyProperty”

在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名。

<insert id="insertSelective" parameterType="com.dwtedx.demo.pojo.DiDemo" useGeneratedKeys="true" keyProperty="id">
    insert into di_income
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="username != null" >
        username,
      </if>
      <if test="remark != null" >
        remark,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="username != null" >
        #{username,jdbcType=VARCHAR},
      </if>
      <if test="remark != null" >
        #{remark,jdbcType=VARCHAR},
      </if>
    </trim>
</insert>


2、Bean getId()获取

Mybatis执行完插入语句后,自动将自增长值赋值给对象DiDemoBean的属性id。因此,可通过DiDemoBean对应的getter方法获取!

int id = diDemoBean.getId(); //获取到的即为新插入记录的ID


3、总结

1.Mybatis Mapper 文件中,“useGeneratedKeys”和“keyProperty”必须添加,而且keyProperty一定得和java对象的属性名称一直,而不是表格的字段名

2.java Dao中的Insert方法,传递的参数必须为java对象,也就是Bean,而不能是某个参数。

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+