为什么mybatis不会输出insert以后的记录id?

 <insert id="insertOne" parameterType="User" useGeneratedKeys="true" keyProperty="uid" keyColumn="uid">
        insert into user (
            <include refid="userRegisterField"></include>
        ) values (
            null,"${username}","${password}","${nickname}"
        )
    </insert>

useGeneratedKeys="true" keyProperty="uid"

这里为什么不会返回新建记录的id,而是总是返回了1?

阅读 2.5k
2 个回答

你好,使用Mybatis中的useGeneratedKeys时有个误区就是以为返回值就是最近的自增id值,其实与普通的insert语句一样,这个返回值仍是新插入的条数。你问题中的uid值,会保存在你传入的User对象中的uid字段中。上官云恒同学问的批量插入也是同理,uid依次放到List中对应的User对象中即可。
示例代码:

        int insert = supplyFilesMapper.insert(supplyFile);

        if (insert > 0) {
            int id = supplyFile.getId();
             ……
        }

返回的1是插入的条数
id已经给设置到对象的id字段上了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏