作者:故事我忘了
个人微信公众号:程序猿的月光宝盒

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入

entity 对应表中字段,如不对应,在xml中起别名

/**
* MH管理实体
*
* @author 金聖聰
* @version 1.0
* @className Excel4MH
* @date 2020/7/21 12:19
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Excel4MH implements Serializable {
private static final long serialVersionUID = 8925979180415560488L;
/** 管理机构名 */
private String orgName;
/** 执行值1 */
private Double zxz01;
/** 执行值2 */
private Double zxz02;
/** 业务时间 */
private String ywsj;
}

map Interface

/**
* MH管理实体
*
* @author 金聖聰
* @version 1.0
* @className Excel4MHMapper
* @date 2020/7/21 12:20
*/
public interface Excel4MHMapper {
void save(List<Excel4MH> list);
}

map xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.bsoft.mapper.Excel4MHMapper">
<insert id="save" parameterType="list">
merge into EXCEL_EHR_ZFBC_006 t1
using (
<foreach collection="list" item="item" index="index" separator="union all">
-- 给实体类中的字段起别名,与数据库中一致
select #{item.orgName} ORGNAME,
#{item.zxz01} ZXZ_01,
#{item.zxz02} ZXZ_02,
-- 字符串转日期函数
to_date(#{item.ywsj}, 'yyyy-mm-dd') YWSJ
-- Oracle中的dual表是一个单行单列的虚拟表 不懂想懂的 出门谷歌或百度,不想懂的这里不用改
from dual
</foreach>) t2
on (
--这里是判断条件 根据name和ywsj判读是否是同一条记录
t1.ORGNAME = t2.ORGNAME and t1.YWSJ = t2.YWSJ
)
-- 如果相等
when matched then
update
-- 这里注意: 在on中的判断条件中出现的字段这里不能出现
set t1.ZXZ_01 = t2.ZXZ_01,
t1.ZXZ_02 = t2.ZXZ_02
--如果不相等
when not matched then
insert ( ORGNAME
, ZXZ_01
, ZXZ_02
, YWSJ)
values ( t2.ORGNAME
, t2.ZXZ_01
, t2.ZXZ_02
, t2.YWSJ)
</insert>
</mapper>

在查询出的result中随机抽取一条记录

entity

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CheckValue4EvaluationIndex implements Serializable {
private static final long serialVersionUID = 222790624982912873L;
/** 上传条数 */
private Integer scts;
/** 抽样机构代码 */
private String cyjgdm;
/** 抽样机构综合评价指数 */
private Double cyjgzhpjzs;
/** 年份 格式 yyyy */
private String nf;
/** 修改标志 */
private String xgbz;
}

map interface

/**
* 评价指数mapper
*
* @author 金聖聰
* @version 1.0
* @className CheckValue4EvaluationIndexMapper
* @date 2020/7/13 10:19
*/
public interface CheckValue4EvaluationIndexMapper {
/**
* 根据传入的年份查询
*
* @param time 需要查询的年份 yyyy
* @return com.bsoft.pojo.vo.CheckValue4EvaluationIndex
* @author 金聖聰
* @email jinshengcong@163.com
* @version v1.0
* @date 2020/7/13 10:21
*/
CheckValue4EvaluationIndex queryByTime(@Param("time") String time);
}

map xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.bsoft.mapper.CheckValue4EvaluationIndexMapper">
<select id="queryByTime" resultType="CheckValue4EvaluationIndex">
select (select count(1) from EXCEL_EVALUATIONINDEX where TIME = #{time}) "scts",
jgdm "cyjgdm",
zhpjzs "cyjgzhpjzs",
#{time} "nf",
'1' "xgbz"
from (
select *
from EXCEL_EVALUATIONINDEX
where TIME = #{time}
order by dbms_random.value
)
where rownum = 1
group by jgdm, zhpjzs, JGM
</select>
</mapper>

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录的更多相关文章

  1. 【转】oracle 中随机取一条记录的两种方法

    oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COU ...

  2. sql 随机抽取几条数据的方法 推荐

    传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序 ...

  3. Oracle随机选择一条记录SQL

    Oracle随机选择一条记录SQL:

  4. 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)

    从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...

  5. laravel如何从mysql数据库中随机抽取n条数据

    laravel如何从mysql数据库中随机抽取n条数据 一.总结 一句话总结: inRandomOrder():$userQuestions=UserQuestion::where($map)-> ...

  6. 2流高手速成记(之三):SpringBoot整合mybatis/mybatis-plus实现数据持久化

    接上回 上一篇我们简单介绍了基于SpringBoot实现简单的Web开发,本节来看Web开发中必不可少的内容--数据持久化 先看项目结构: 1. 创建数据表 打开mysql,打开数据库 test (没 ...

  7. sql server 大批数据插入时,时间过长的问题

    private const string con = "server=192.168.30.36;database=test;user=sa;pwd=123456"; static ...

  8. 从mysql数据表中随机取出一条记录

    核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...

  9. Oracle数据库随机取某条记录的一个字段值

    思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE  t ORDER BY ...

随机推荐

  1. 03 . 二进制部署kubernetes1.18.4

    简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...

  2. eIQ WSL下工具及环境配置

    1. 配置WSL 参考[https://www.cnblogs.com/hayley111/p/12844337.html] 2. 配置VScode 参考[https://zhuanlan.zhihu ...

  3. SpringMVC的项目架构思想

    SpringMVC的项目架构思想 一.DO和Model的区别 DO是对数据库表的映射.Model是处理业务逻辑的模型(领域模型).例如:用户信息表和用户密码表分别是两个DO,但是对于实体用户来说,密码 ...

  4. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之调试工具ab(apache bench)

    ab 测试工具,全称是 apache bench ,是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用. ab 可以在 Windows 系统中使用,也可以在 L ...

  5. 要想数组用的 6,怎能不懂 java.util.Arrays

    java.util.Arrays 类就是为数组而生的专用工具类,基本上常见的对数组的操作,Arrays 类都考虑到了,这让我由衷地觉得,是时候给该类的作者 Josh Bloch.Neal Gafter ...

  6. JVM源码分析之深入分析Object类finalize()方法的实现原理

      原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 ​“365篇原创计划”第十篇. 今天呢!灯塔君跟大家讲: 深入分析Object类finalize()方法的实现原理 finalize 如果 ...

  7. uni-app中textarea组件

    textarea组件,官方给出的监听事件有以下事件: 其中一定要注意,当使用 v-model 对表单内容进行双向绑定的时候,@input 事件是在绑定变量变化前触发的,所以如果在input事件内打印绑 ...

  8. JavaScript图片预览

    预览选中的图片文件 jQuery $("#selectImage").change(function(){ $("#image").attr("src ...

  9. python写12306抢票

    #!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...

  10. day07 流程控制

    灵魂三问: 什么是?为什么要有?怎么用? 目录 一 分支结构 1.1 什么是分支结构 1.2 为什么要有分支结构 1.3 怎么用分支结构 1.3.1 if语法 二 循环结构 2.1while循环 一 ...