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

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. Java 多线程基础(十二)生产者与消费者

    Java 多线程基础(十二)生产者与消费者 一.生产者与消费者模型 生产者与消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”.“消费者”.“仓库”和“产品”.他们之间的关系如下: ①.生 ...

  2. 【SpringMVC】

    前言

  3. 入门大数据---Sqoop简介与安装

    一.Sqoop 简介 Sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出: 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS.Hive.H ...

  4. Spring Boot是什么?

    背景 最近因公司需要,开始研究java相关的开发,之前一直从事.net相关开发,所以写的或者理解的不对的地方呢,希望大家批评指正. 首先开发框架吧,就像.net很早之前有asp.net webForm ...

  5. FreeMarkerz在List中取任意一条数据的某一个值

    首先你要知道要取的数据的下标 <#list itemsList as item> <#if item_index==1> <#if "${item.value} ...

  6. 化繁就简,如何利用Spring AOP快速实现系统日志

    1.引言 有关Spring AOP的概念就不细讲了,网上这样的文章一大堆,要讲我也不会比别人讲得更好,所以就不啰嗦了. 为什么要用Spring AOP呢?少写代码.专注自身业务逻辑实现(关注本身的业务 ...

  7. ASP.NET 开源导入导出库Magicodes.IE 多Sheet导入教程

    多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导入 多个不同格式的Sheet数据导入 ...

  8. Redis系列(十二):数据结构SortedSet跳跃表中基本操作命令和源码解析

    1.SkipList Redis的sortedSet数据结构是有序不重复的(索引为唯一的,数据(score)却可以重复), 跳表是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它 ...

  9. mssql 手工注入流程小结

    对于MSSQL的注入点,无外乎这三种权限:SA,DB_OENER,PUBLIC.SA(System Admin)权限我们可以直接执行命令,DB_OENER权限的话,我们可以找到WEB的路径,然后用备份 ...

  10. 组合 a 标签与 canvas 实现图片资源的安全下载的方法与技巧

    普通用户下载图片时只需一个「右键另存为」操作即可完成,但当我们做在线编辑器.整个 UI 都被自定义实现时,如何解决不同域问题并实现页面中图片资源的安全下载呢?本文就解决该问题过程中所涉及的正则表达式. ...