最近开发中遇到一个问题,通过inseret语句插入新数据后,如何获取新插入数据的id,上网查询之后,很容易就获取到解决办法,我尝试了两种
方法一:
在mapper.xml的insert标签语句中加入参数 useGeneratedKeys="true" keyProperty="id"
其中,useGeneratedKeys表示返回自增主键,keyProperty是Java对象的属性名,而不是数据库表中的字段名。还有一个keyColumn才是数据库表中的字段名,不过这里省略没有用
方法二:
在mapper.xml的insert标签语句中添加语句:
<selectKey resultType="integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey>
两者执行结果如下:
可以看到插入数据的id为2,而输出i的结果为1
以上哪里错了吗?
我又尝试了许多次调整,最终结果都是这样:并不返回插入数据的id值,结果不是1就是null
都要崩溃的时候,发现了华点:
原来如此,他把结果返回到了实体类的id中,而不是默认的返回值中,
默认返回值只是代表成功插入的数据条数。
这么简单,白忙活了这么久,终于大功告成了