MyBatis insert 的同时返回对应的行id
MyBatis insert 的同时返回对应的行id
如何使用?
1 | <insert id-"xx" paramType="xx.xx.xx" resultType="yy.yy.yy" useGeneratedKeys="true" keyProperty="id"> |
useGeneratedKeys=”true” keyProperty=”id” : 添加这部分代码(属性),即可令MyBatis insert 返回id而不是插入的数量
注意点:
useGeneratedKeys="true"
和keyProperty="id"
这两个属性通常在MyBatis或类似的ORM框架中用于插入(INSERT
)操作,当执行插入操作时,这些属性用于获取数据库自动生成的主键并将其赋值回对象的id
属性。在执行删除(
DELETE
)操作时,这些属性不适用。删除操作通常返回的是受影响的行数,即被删除的记录数量。在MyBatis中,删除操作的返回值通常是一个整数,表示成功删除的记录数。更新(
UPDATE
)操作在使用useGeneratedKeys="true"
和keyProperty="id"
时也不会返回ID。这些属性用于在插入(INSERT)操作后获取自动生成的主键。在更新操作中,这些属性没有作用,因为更新操作不会生成新的键值。更新操作通常返回的是受影响的行数,即数据库中被更新的记录数。在MyBatis或其他ORM框架中,更新操作的返回值通常是一个整数,表示成功更新的记录数。如果 insert …… on duplicate key update,会返回id吗?
在使用
INSERT ... ON DUPLICATE KEY UPDATE
语句时,如果发生了插入(即之前没有重复的键),那么会返回新插入行的ID。如果是更新现有行(因为遇到了重复的键),行为取决于所使用的数据库和ORM框架。对于MySQL来说:
- 如果插入了新行,则返回新行的ID。
- 如果更新了现有行,并且没有改变自增ID,则返回0。
- 如果更新了现有行,并且同时改变了自增ID(这是不常见的),则返回新的ID。
- 在MyBatis中,如果你设置了
useGeneratedKeys="true"
和keyProperty="id"
,并且是插入新行,你可以获取到新生成的ID。但如果是更新操作,MyBatis并不会默认返回这个ID。你可能需要额外的配置或查询来获取这个值,如果它对你的应用程序来说是必要的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CautionX!