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,而不能是某个参数。