mybatis insert & update
来源:互联网 发布:php程序员的工作状态 编辑:程序博客网 时间:2024/06/16 05:04
问题:往mysql数据库插入数据时,当主键已经存在时,就更新数据,达到类似oracle数据库的merge命令。更新数据时,需要对一个字段进行累加,同时找出另外一个字段的最大值。
解决办法:insert into ·····on duplicate update······case when ·····end
mysql语句:
INSERT INTO stat_flow ( USER_ID, MOBILE, MONTH, YEAR, SUM_TIMES, SUM_USED_COIN, MAX_USED_COIN)VALUES(·····)ON DUPLICATE KEY UPDATE SUM_TIMES = SUM_TIMES+ values(SUM_TIMES),SUM_USED_COIN = SUM_USED_COIN + values(SUM_USED_COIN),MAX_USED_COIN = (CASE WHEN MAX_USED_COIN < values(MAX_USED_COIN) THEN values(MAX_USED_COIN) ELSE MAX_USED_COIN END);
<insert id="insertStatFlow" parameterType="java.util.List" > INSERT INTO stat_flow ( USER_ID, MOBILE, MONTH, YEAR, SUM_TIMES, SUM_USED_COIN, MAX_USED_COIN)VALUES <foreach collection="list" item="item" index="index" separator="," > ( #{item.user_id}, #{item.mobile}, #{item.month}, #{item.year}, #{item.sum_times}, #{item.sum_used_coin}, #{item.max_used_coin} ) </foreach> ON DUPLICATE KEY UPDATE SUM_TIMES = SUM_TIMES+ values(SUM_TIMES),SUM_USED_COIN = SUM_USED_COIN + values(SUM_USED_COIN),MAX_USED_COIN = CASE WHEN MAX_USED_COIN <![CDATA[<=]]> values(MAX_USED_COIN) THEN values(MAX_USED_COIN) ELSE MAX_USED_COIN END </insert>
1. mysql语句中的大小比较符 <、>、<= 、>= 需要特殊处理,在mybatis中分别是<![CDATA[<]]> 、<![CDATA[>]]> 、<![CDATA[<=]]>、 <![CDATA[>=]]> ,因为尖括号在xml中代表是一个标签。
2. value(字段名),代表的是原来数据库中的值。
0 0
- mybatis 批量insert,update
- mybatis insert & update
- mybatis 批量insert , update
- MyBatis-insert, update and delete
- mybatis批量update,insert,delete
- Mybatis中insert、Update操作返回主键
- Mybatis insert or update return primary key
- Mybatis自动生成insert,update,delete
- mybatis配置insert/update/delete同一个模板
- MyBatis oracle 批量 insert update 新增 更新
- mybatis——select、insert、update、delete
- mybatis+oracle+批量insert批量update
- mybatis映射器三(insert,update,delete)
- MyBatis insert、update、delete、sql 标签
- MyBatis☞ select、insert、update、delete
- mybatis判断用insert还是update
- mybatis——select、insert、update、delete
- 数据库--MyBatis的(insert,update,delete)三种批量操作
- Java MySQL 中文出现乱码的问题
- 关于单线程和多CPU的问题
- HotSpot中Parallel Scavenge/Parallel Old与Serial/Serial Old内存分配策略区别
- Dreamweaver创建列表及查找与替换
- Golang语言学习资源
- mybatis insert & update
- excel基础
- 后缀自动机学习总结
- Eclipse SVN 中的分支与合并
- 如何判断素数 如何输出范围中的素数
- 第一次写cmd命令
- 如何求最大公约数
- 关于activity的一些基础知识
- 自定义天气View控件