欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Mybatis获取插入的自增id_Mybatis插入保存数据时返回自增id

程序员文章站 2022-02-22 08:17:30
...

鉴于昨天有 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,而不能是某个参数。