mybatis--mysql 批量插入批量更新在一条sql语句中完成
2016-01-04 17:21
946 查看
1、前提条件是这张表 需要有唯一索引,更新是基于唯一索引更新的,这张表是以 user_id 和word来作为唯一主键
2、sql语句
<!-- 批量批量更新插入 -->
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true">
insert into t_user_dictionrecord
(book_id,lesson_id,word,diction_time,user_id,diction_num,module,machine_id,create_time,update_time)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.bookId},#{item.lessonId},#{item.word},#{item.dictionTime},#{item.userId},#{item.dictionNum},#{item.module}, #{item.machineId},now(),now())
</foreach>
ON DUPLICATE KEY UPDATE diction_num = VALUES(diction_num) + 1,diction_time =diction_time + VALUES(diction_time),update_time = now()
</insert>
注意:如果用到 ON DUPLICATE KEY UPDATE 这句的话,主键id递增方式就会改变,不是一一递增,更新一条数据就会增加一个
2、sql语句
<!-- 批量批量更新插入 -->
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true">
insert into t_user_dictionrecord
(book_id,lesson_id,word,diction_time,user_id,diction_num,module,machine_id,create_time,update_time)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.bookId},#{item.lessonId},#{item.word},#{item.dictionTime},#{item.userId},#{item.dictionNum},#{item.module}, #{item.machineId},now(),now())
</foreach>
ON DUPLICATE KEY UPDATE diction_num = VALUES(diction_num) + 1,diction_time =diction_time + VALUES(diction_time),update_time = now()
</insert>
注意:如果用到 ON DUPLICATE KEY UPDATE 这句的话,主键id递增方式就会改变,不是一一递增,更新一条数据就会增加一个
相关文章推荐
- mysql 存入 小数点后2位的数据 字段类型的设置?
- mySQL + jira
- Mysql事务隔离级
- Mysql主从配置,实现读写分离
- MySql存储过程—变量
- Mysqldump备份数据库—结构+数据+存储过程、函数、触发器
- MySQL下,text 、blob的比较
- mysql备份和还原(1)
- MySQL与PostgreSQL比较 哪个数据库更好
- 去 IOE,MySQL 完胜 PostgreSQL
- Mysql 一些常用命令
- PostgreSQL与MySQL比较
- mysql 开始事件,零点插入一条数据
- Mysql my.ini 配置
- mysql 语句集锦
- 使用Jmeter测试MySQL性能——(1)连接配置
- mysql-异常
- mysql-case ... when...then...else...end处理判断赋值机制
- 【MySql学习心得】day one
- 【数据库】MySQL删除表中重复数据