Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录
个人微信公众号:程序猿的月光宝盒
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数据插入时,存在就更新,不存在就插入以及随机抽取一条记录的更多相关文章
- 【转】oracle 中随机取一条记录的两种方法
oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COU ...
- sql 随机抽取几条数据的方法 推荐
传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序 ...
- Oracle随机选择一条记录SQL
Oracle随机选择一条记录SQL:
- 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)
从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...
- laravel如何从mysql数据库中随机抽取n条数据
laravel如何从mysql数据库中随机抽取n条数据 一.总结 一句话总结: inRandomOrder():$userQuestions=UserQuestion::where($map)-> ...
- 2流高手速成记(之三):SpringBoot整合mybatis/mybatis-plus实现数据持久化
接上回 上一篇我们简单介绍了基于SpringBoot实现简单的Web开发,本节来看Web开发中必不可少的内容--数据持久化 先看项目结构: 1. 创建数据表 打开mysql,打开数据库 test (没 ...
- sql server 大批数据插入时,时间过长的问题
private const string con = "server=192.168.30.36;database=test;user=sa;pwd=123456"; static ...
- 从mysql数据表中随机取出一条记录
核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...
- Oracle数据库随机取某条记录的一个字段值
思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE t ORDER BY ...
随机推荐
- Docker部署Python项目
简介 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取的策略就是引入虚拟机,比如在 Wind ...
- 入门大数据---Hive是什么?
这篇文章主要介绍Hive的概念. 简介: Hive中文名叫数据仓库管理系统,之前我们操作MapReduce必须通过编写代码或者通过特殊命令来实现,有了Hive我们通过常用的SQL语句就能操作MapRe ...
- ES6躬行记 笔记
ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向
- EntityFramework Core 迁移忽略主外键关系
前言 本文来源于一位公众号童鞋私信我的问题,在我若加思索后给出了其中一种方案,在此之前我也思考过这个问题,借此机会我稍微看了下,目前能够想到的也只是本文所述方案. 为何要忽略主外键关系 我们不仅疑惑为 ...
- Python之浅谈绑定方法
目录 绑定方法和非绑定方法 绑定方法 对象的绑定方法 类的绑定方法 非绑定方法 总结 绑定方法和非绑定方法 类中定义的方法大致可以分为两类:绑定方法和非绑定方法.其中绑定方法又可以分为绑定到对象的方法 ...
- IndentationError: unindent does not match any outer indentation level解决策略
[亲测有效]Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer i ...
- nginx配置奇怪问题记录
执行 nginx -t 检查配置报了如下错误: 下面是配置信息 遇到个很奇怪的问题,plm-api-stage 这么配置就可以正常校验过,但是改成 plm-stage-api,就会上面的警告信息: ...
- 使用现代CSS的响应式版面
为一个网站选择类型尺寸是项艰巨的任务. 标题和段落的尺寸在网页布局和可读性方面处理起来很棘手. 谢天谢地, 我们有模块化缩放可以引导我们. 模块化缩放是一个数字序列以某种方式关联另一个序列. Tim ...
- BZOJ3573 米特运输 题解
题目 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由 ...
- 洛谷 P2114 [NOI2014]起床困难综合症 位运算
题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...