mybatis里oracle与MySQL的insert_update

需求:gisdata表中插入数据,如果wxid数据存在就更新,不存在就插入

Mysql的mybatis配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <mapper namespace="com.test.wechat.dao.GisDataMapper">
 5     <sql id="userColumns">
 6         wxid,ip,port,login_username,login_status,wx_num,tel,qq,email,task_name,min_longitude,max_longitude,min_latitude,max_latitude,clent_id,country,province,city,town
 7     </sql>
 8 
 9     <insert id="insertGisData" parameterType="GisData" useGeneratedKeys="true">
10         replace into gisdata (<include refid="userColumns"/>) values (#{wxid},#{ip},#{port},#{loginUsername},#{loginStatus},#{wxNum},#{tel},#{qq},#{email},#{taskName},#{minLongitude},#{maxLongitude},#{minLatitude},#{maxLatitude},#{clentId},#{country},#{province},#{city},#{town})
11     </insert>
12     <!-- <delete id="deleteGisData" parameterType="int">
13         delete from gis_data
14     </delete> -->
15 </mapper>

oracle的mybatis配置

 1 <insert id="insertGisData" parameterType="GisData" 
 2  merge into gisdata gd
 3  using dual on(gd.wxid=#{wxid})
 4  when matched then
 5  update
 6  set gd.ip = #{ip},
 7  gd.port=#{port},
 8  gd.wx_num=#{wx_num}
 9  gd.town=#{town}
10  when not matched then
11  insert
12  (
13  wxid,ip,port,wx_num,town
14  ) 
15  values
16  (
17  #{wxid},#{ip}, #{port},#{wx_num},#{town}
18  )
19  </insert>

 

 备注:MySQL 的 replace into:插入数据前,replace into会首先根据主键或唯一索引判断是否存在相同的记录,如果存在,则先删除原来数据,然后再插入新数据;如果没有相同的记录,则直接插入。

oracle的merge into:与mysql中的replace into类似,在插入数据前,merge into也会根据主键判断是否有相同的记录,不同的是后面的操作,merge into对于存在的相同记录可以不做任何操作,也可以进行修改操作,但是不能有其他操作;如果没有相同记录,可以不做任何操作,也可以做插入操作,同样也 不能有其他操作。

 

但我实际验证时发现两者之间有一个区别(都是操作同一张表):

MySQL的replace into 1.更新已存在数据  2.删除与新数据匹配不上的数据 3.插入新数据(与原表匹配不上的数据)

oracle的merge into 只能更新与追加

转载于:https://www.cnblogs.com/judylucky/p/5749996.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

input的type属性的修改

记录一下成长的历程吧&#xff01; 刚开始写&#xff0c;没什么文笔&#xff0c;也没什么技术含量&#xff0c;可能主要的是纪录一下平常工作学习中遇到的问题&#xff0c;以及解决的办法吧。或者只有问题&#xff0c;没有解决办法。 前两天项目中遇到的一个问题&#xff0c;由…

程序 进程 线程

并行&#xff1a;再球场上&#xff0c;每个人都有篮球&#xff0c;都自己玩自己的 并发&#xff1a;只有一个球&#xff0c;一堆人玩 球&#xff08;CPU&#xff09; 人&#xff08;线程&#xff09; t1这个线程对象&#xff0c;是再主线程造的&#xff0c;以及执行t1.start…

ActiveMQ入门实例

1.下载ActiveMQ 去官方网站下载&#xff1a;http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip&#xff0c;然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。 启动ActiveMQ以后&#xff0c;登陆&#xff1a;http://localhost…

前端癖

https://github.com/whqet/Fed-Hobby 前端癖 前端癖&#xff0c;前端开发学习资源集散地&#xff0c;分享前端开发相关的学习资源。 欢迎大家加入QQ群前端癖(333278649)交流学习。 前端导航目录 大神国际国内团队国内团队资讯技术周刊技术社区技术博客灵感创意评奖案例交流资源…

Thread类的有关方法以及优先级

线程中的常用方法 线程的优先级&#xff1a; 线程优先级设置的高&#xff0c;只是说明CPU优先处理该线程的概率高&#xff0c;而不是先处理优先级高的

前端学习(2056):初识vue.js

MVVM模式 jquery.js <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&q…

什么是响应式网页

什么是响应式网页 2000: 塞班、黑莓&#xff0c;GPRS&#xff0c;2.5G&#xff0c;可以浏览WML网页 2008: iOS/Linux&#xff0c;3G&#xff0c;Safari&#xff0c;可以浏览HTML网页 Android/Linux&#xff0c;Chrome&#xff0c;可以浏览HTML网页 Responsive Web Page 响应式/…

HttpWebRequest类

HttpWebRequest类与HttpRequest类的区别。 HttpRequest类的对象用于服务器端&#xff0c;获取客户端传来的请求的信息&#xff0c;包括HTTP报文传送过来的所有信息。而HttpWebRequest用于客户端&#xff0c;拼接请求的HTTP报文并发送等。 HttpWebRequest这个类非常强大&#xf…

比较创建几种线程的方式

JDK5.0新增的创建多线程的方式&#xff1a; 新增一&#xff1a; //创建多线程的方式三&#xff1a;callabe;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;//1.创建一个Callable的实现类 c…

线程的安全问题

解决方法一: 注意:在synchronized中的同步监视器&#xff08;锁&#xff09;只能是唯一的。 方式二&#xff0c;同步方法 方法三&#xff1a; lock() lock锁 public class ThreadTest6 {public static void main(String[] args) {Window w new Window();Thread t1 new Thre…

254. Factor Combinations

就是backtracking 1 public List<List<Integer>> getFactors(int n) {2 List<List<Integer>> res new ArrayList<List<Integer>>();3 helper(res, new ArrayList<Integer>(), n, 2);4 return res;5 …

数据的个人视角:数据可视化的意义

当谈论到数据可视化对个人用户的实用价值时&#xff0c;很多人可能会想到它仅适用于企业或专业领域。然而&#xff0c;数据可视化对个人用户同样具有重要的实用价值。本文将从可视化从业者的角度出发&#xff0c;简单说说数据可视化对个人用户的实用价值。 首先&#xff0c;数…