mysql更新语句获取受影响行数和插入记录id

本文介绍在MySQL中如何使用SELECT ROW_COUNT()获取更新或插入操作后受影响的行数,以及如何通过SELECT LAST_INSERT_ID()来获取最后插入记录的主键ID。

-- MySQL 更新或插入后获取受影响行数

SELECT ROW_COUNT();

-- mysql 插入一条记录后获取插入记录的主键id

SELECT LAST_INSERT_ID();
在 MyBatis 中实现批量插入操作,尤其是在插入对象列表时,数据库字段名与实体类属性不一致的情况下,可以通过 `<foreach>` 标签来遍历集合,并构造多条 `INSERT` 语句。此外,MyBatis 默认返回影响行数(即插入成功的记录数量),因此无需额外配置返回值类型。 以下是一个完整的示例,展示如何在 MyBatis 的 XML 映射文件中编写批量插入语句,并处理字段名不一致的情况: ### 批量插入语句写法 假设有一个实体类 `User`,其属性包括 `userName`、`birthDay`、`userSex` `userAddress`,而对应的数据库表为 `tb_user`,字段分别为 `username`、`birthday`、`sex` `address`。 ```xml <insert id="batchInsertUser"> INSERT INTO tb_user (username, birthday, sex, address) VALUES <foreach collection="list" item="user" separator=","> ( #{user.userName}, <!-- 实体类属性名与数据库字段名不一致 --> #{user.birthDay}, #{user.userSex}, #{user.userAddress} ) </foreach> </insert> ``` 上述代码通过 `<foreach>` 遍历传入的 `List<User>` 对象集合,并将每个对象的属性映射到数据库字段中。即使字段名不一致,也可以通过显式指定属性名完成赋值 [^3]。 ### 返回影响行数 在执行批量插入时,MyBatis 会自动返回影响行数。该数值表示成功插入数据库的记录数量。如果某条插入失败,则整个事务会回滚,返回值将为 `0`,前提是数据库支持事务并已开启事务管理 [^2]。 例如,在 Java 接口中定义如下方法: ```java int batchInsertUser(@Param("list") List<User> userList); ``` 调用此方法后,返回值即为插入成功的记录数量。 ### 注意事项 - **事务控制**:若需保证数据一致性,建议在调用批量插入方法前手动开启事务。 - **性能优化**:对于大量数据插入,可考虑使用 `rewriteBatchedStatements=true` 参数优化 MySQL 的批量插入性能。 - **字段映射**:当字段名与属性名不一致时,务必确保 `#{}` 中引用的是正确的属性名,以避免插入错误的数据或抛出异常 [^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值