MyBatis插入数据后返回最新id,踩坑返回id一直为1

当我们插入数据时往往需要当前插入数据的id,初学时比较笨,在插入之后再做一遍查询来获取id,这样会出现很多的问题,然后自己去网上查了一下,发现可以直接返回id,直接上代码;
正常插入语句是这样的

<insert id="addTeacher" parameterType="zlh.meng.demo.bean.Teacher">
       insert into teacher(tsex,tbirth) values(#{tsex},#{tbirth})
 </insert>

使用MySql和SQL server,我们只需要返回id时只需要加入useGeneratedKeys 和keyProperty即可,因为这两个数据库支持auto-generated key field

<insert id="addTeacher" useGeneratedKeys="true" keyProperty="tid">
      insert into teacher(tsex,tbirth) values(#{tsex},#{tbirth})
</insert> 

useGeneratedKeys:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。MySql和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了
keyProperty:用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中

以上在网上很容易查到,使用之后我的id一直为1我猜到我可能踩坑了,原因可能有很多,大概就是要在插入之后再调用getID方法获取id,不能插入时获取,因为他是放到了bean的对象中,而不是返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值