最近开发中遇到一个问题,通过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中,而不是默认的返回值中,

        默认返回值只是代表成功插入的数据条数。

这么简单,白忙活了这么久,终于大功告成了

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐