ibatis 批量执行INSERT INTO...ON DUPLICATE KEY UPDATE...

本文介绍了一种使用MyBatis框架批量更新图书信息的方法,通过XML映射文件中的SQL语句实现对数据库中图书表的高效更新操作,同时处理了可能的重复键冲突。
<update id="updaeBooks" parameterClass="java.util.List">
	<![CDATA[ INSERT INTO book(authorId, bookName,price,shelve) VALUES]]>  
	<iterate conjunction =",">   
		<![CDATA[  
			(#books[].authorId#,#books[].bookName#,#books[].price#,#books[].shelve#)
		]]>  
	</iterate>
	<![CDATA[ ON DUPLICATE KEY UPDATE price=values(price),shelve=values(shelve) ]]>  
</update>
@Override
public void updateBooks(List<Book> books) throws Exception {
	getSqlMapClient().update("updateBooks", books);
}

 

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1b7554d4] was not registered for synchronization because synchronization is not active 2025-09-01T19:05:45.189+08:00 INFO 22824 --- [springboot-mybatis-quickstart] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-09-01T19:05:45.549+08:00 INFO 22824 --- [springboot-mybatis-quickstart] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@7de3206d 2025-09-01T19:05:45.550+08:00 INFO 22824 --- [springboot-mybatis-quickstart] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. JDBC Connection [HikariProxyConnection@1487559828 wrapping com.mysql.cj.jdbc.ConnectionImpl@7de3206d] will not be managed by Spring ==> Preparing: insert into employee(username,password,name,gender,phone) values (?,?,?,?,?) ==> Parameters: zhangsan(String), 1234567(String), 张三(String), 1(Integer), 12345678901(String) Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1b7554d4] org.springframework.dao.DuplicateKeyException: ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'zhangsan' for key 'employee.username' ### The error may exist in org/example/mapper/UserMapper.java (best guess) ### The error may involve org.example.mapper.UserMapper.addUser-Inline ### The error occurred while setting parameters ### SQL: insert into employee(username,password,name,gender,phone) values (?,?,?,?,?) ### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'zhangsan' for key 'employee.username' ; Duplicate entry 'zhangsan' for key 'employee.username' at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.do
最新发布
09-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值