一键生成insert,update,delete,的mybatis sql 语句

由于最近写增删改查,对与开发来说,编写一个insert和update 语句是十分耗时耗力的,因为有大量的字段要复制粘贴。粘贴完还要去比对一下有没有漏粘的,很耗费精力,于是就想着写一个sql,通过手动指定哪张表,运行这个sql后,程序便自动将表中的字段补充上去。自己在做一点微调即可,省下来大部分的开发时间,我们只需要将结果粘贴到mybatis.xml 映射文件中即可

实现效果
请添加图片描述

DWS数据库 执行

SELECT 'insert into '||TABLE_SCHEMA||'.'|| TABLE_NAME || '(
'||STRING_AGG(column_name, ',
')||'
)values (
'||STRING_AGG('#{'||column_name||', jdbcType=VARCHAR}', ',
') || '
)' as insertSql,
'insert into '||TABLE_SCHEMA || '.' || TABLE_NAME || '
<foreach collection="list" separator="union" item="item">'||'
select
'||STRING_AGG('#{'||column_name || ', jdbcType=VARCHAR} as ' || column_name, '
')|| '
from dual ' || '
</foreach>' as batchInsertSql, 'update '||TABLE_SCHEMA || '.'|| TABLE_NAME || '
set
' || STRING_AGG(column_name || ' = #{' ||column_name||', jdbcType=VARCHAR}', ',
') || '
where 字段 = #{old_字段}' as updateSql,'delete'||TABLE_SCHEMA || '.' || TABLE_NAME ||' where主键1 = #{old_主键1} 'as deleteSql,
'select * from ' || TABLE_SCHEMA || '.' || TABLE_NAME as "select",'merge into' || TABLE_SCHEMA || '.' || TABLE_NAME || 't using (
select
'||STRING_AGG('#{' || column_name || ', jdbcType=VARCHAR} as '||column_name, ',
') || 'from dual ) tt
on(t.主键1 = tt.主键1
and t.主键2 = tt.主键2
) when matched then
update set
'|| STRING_AGG ('t.'||column_name || ' = tt.' || column_name, ',
') || 'when not matched then
insert (
'|| STRING_AGG ('t.' || column_name, ',
') || 'values (
' || STRING_AGG( 'tt.' || column_name, ',
')|| ')' as mergelntoSql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='dm_position'--替换为您的数据库名
AND TABLE_NAME='cfg_tnc_field'--替换你的表名
GROUP BY TABLE_SCHEMA, TABLE_NAME;

DWS 和Oracel 数据库可以执行

SELECT 'insert into '||OWNER||'.'|| TABLE_NAME || '(
'||LISTAGG(column_name, ',
') WITHIN GROUP (ORDER BY COLUMN_ID)||'
)values (
'||LISTAGG('#{'||column_name||', jdbcType=VARCHAR}', ',
') WITHIN GROUP (ORDER BY COLUMN_ID) || '
)' as insertSql,
'insert into '||OWNER|| '.' || TABLE_NAME || '
<foreach collection="list" separator="union" item="item">'||'
select
'||LISTAGG('#{'||column_name || ', jdbcType=VARCHAR} as ' || column_name, '
') WITHIN GROUP (ORDER BY COLUMN_ID)|| '
from dual ' || '
</foreach>' as batchInsertSql,'update '||OWNER|| '.'|| TABLE_NAME || '
set
' || LISTAGG(column_name || ' = #{' ||column_name||', jdbcType=VARCHAR}', ',
') WITHIN GROUP (ORDER BY COLUMN_ID) || '
where 字段 = #{old_字段}' as updateSql,'delete'||OWNER|| '.' || TABLE_NAME ||' where主键1 = #{old_主键1} 'as deleteSql,
'select * from ' || OWNER|| '.' || TABLE_NAME as "select",'merge into' || OWNER|| '.' || TABLE_NAME || 't using (
select
'||LISTAGG('#{' || column_name || ', jdbcType=VARCHAR} as '||column_name, ',
') WITHIN GROUP (ORDER BY COLUMN_ID) || 'from dual ) tt
on(t.主键1 = tt.主键1
and t.主键2 = tt.主键2
) when matched then
update set
'|| LISTAGG('t.'||column_name || ' = tt.' || column_name, ',
')  WITHIN GROUP (ORDER BY COLUMN_ID)|| 'when not matched then
insert (
'|| LISTAGG('t.' || column_name, ',
') WITHIN GROUP (ORDER BY COLUMN_ID) || 'values (
' || LISTAGG( 'tt.' || column_name, ',
') WITHIN GROUP (ORDER BY COLUMN_ID)|| ')' as mergelntoSql
FROM ALL_TAB_COLUMNS
WHERE OWNER='dm_position'--替换为您的数据库名,oracel 要大写,dws 要小写
AND TABLE_NAME='cfg_tnc_field'--替换你的表名,oracel 要大写,dws 要小写
GROUP BY OWNER, TABLE_NAME;

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

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

相关文章

二、C#基本语法

C#是一种面向对象的编程语言。在面向对象的程序设计方法中&#xff0c;程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型&#xff0c;或者说&#xff0c;是相同的class中。 例如&#xff0c;以rectangle&#xff08;矩形&#xff09;对象为例。它具有length和…

STM32Cube配置STM32F072C8T6的CAN总线说明

目录 1. 引脚配置2. 时钟配置3. 代码添加 1. 引脚配置 2. 时钟配置 CAN配置 波特率计算&#xff1a;500K 48 / &#xff08;431&#xff09;*12 48 / 96 使能中断&#xff0c;很关键&#xff0c;否则CAN无法发送。 3. 代码添加 添加滤波器使能、接收中断使能、CAN使能&…

打造基于大模型的AI产品

我要飞往印度进行短暂旅行&#xff0c;因此花了一个小时的时间处理在线签证申请流程。完成后&#xff0c;由于我现在知道涉及的内容&#xff0c;我向 ChatGPT 4o 询问了相关问题。这些观点中的大多数都是部分或完全错误的。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - …

微信小程序开发系列(三十五)·自定义组件的属性properties

微信小程序开发系列&#xff08;三十四&#xff09;自定义组件的创建、注册以及使用&#xff08;数据和方法事件的使用&#xff09;_wx小程序组件开发-CSDN博客 目录 1. 组件的属性 2. 组件的使用 3. 细节描述 1. 组件的属性 Properties是指组件的对外属性&#xff0c;主…

Ms08067安全实验室成功实施多家业务系统渗透测试项目

点击星标&#xff0c;即时接收最新推文 近日&#xff0c;Ms08067安全实验室针对多家公司重要系统实施渗透测试项目。公司网络信息系统的业务应用和存储的重要信息资产均较多&#xff0c;存在网络系统结构的复杂性和庞杂等特点&#xff0c;使得公司网络信息系统面临一定风险。项…

顺安蜘蛛池四川官网下载

baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? 虽然影视泛目录很火,但超度站群版本自出现以来-直流量稳定,可惜这两年起站全靠域名。但话说回来,咱不能否认,只要用的域名好,做啥泛目录都有好…

【第11章】别人的工作流,如何使用和调试(上)?(2类必现报错/缺失节点/缺失模型/思路/实操/通用调试步骤)ComfyUI基础入门教程

经过前面章节的学习,相信大家对于工作流是什么?如何搭建?怎么使用基础的工作流?已经很清楚了。 那么,接下来的课程,我们会上一点难度, 并且更接近实战状态了。 这节课,我们就用一套从“文本 - 静帧 - 视频”的AI短片全流程工作流,讲一下,网络上下载的工作流,需要如…

树与图的深度优先遍历——AcWing.846树的重心

树与图的深度优先遍历 定义 从图的某个顶点出发&#xff0c;沿着一条路径尽可能深地访问图中顶点。 运用情况 图的连通性判断。寻找特定路径或回路。 注意事项 要标记已访问的节点&#xff0c;以避免重复访问导致死循环。对于有向图和无向图可能需要不同的处理。 解题思…

C++ Primer Plus第五版笔记(p201-250)

第六章 函数&#xff08;下&#xff09; 在含有return语句的循环后面应该也有一条return语句 不要返回局部对象的引用或指针&#xff0c;当函数结束时临时对象占用的空间也就随之释放掉了&#xff0c;所以两条return语句都指向了不再可用的内存空间。 如果函数返回指针、引用…

排序(2)【选择排序】【快速排序】

一.选择排序 选择排序就是选择一个数组的最大的数字或者最小的数字&#xff0c;放在一整个数组的最后或者开头的位置。 1.选择排序的实现 我们可以对选择排序进行一些加强&#xff0c;普通的选择排序是选择最小的数&#xff0c;然后进行交换。这个加强之后就是我们既要选择出…

从ES的JVM配置起步思考JVM常见参数优化

目录 一、真实查看参数 &#xff08;一&#xff09;-XX:PrintCommandLineFlags &#xff08;二&#xff09;-XX:PrintFlagsFinal 二、堆空间的配置 &#xff08;一&#xff09;默认配置 &#xff08;二&#xff09;配置Elasticsearch堆内存时&#xff0c;将初始大小设置为…

ElasticSearch + kibana:类型声明

当我们使用 kibana 创建索引时&#xff0c;如果不申明数据类型&#xff0c;默认字符串赋予 text类型&#xff0c;如下图所示 接下来我们继续创建多条数据如下&#xff1a; 下面我们来检索下&#xff1a; 通过以上两个案例我们发现&#xff0c;使用 match 模糊查询 li-3 明明…

别再问别人了,这是小白都能懂的拓扑图指南

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 上午好&#xff0c;我的网工朋友。 老杨的网工交流群里经常会有这种现象&#xff1a; 一群小伙伴在问各类型拓扑图的问题&#xff0c;怎么设计&…

monitor-zabbix

监控体系理论 学习本篇文章&#xff0c;了解运维监控系统的前世今生 zabbix官网仓库地址 zabbix官网 https://www.zabbix.com/cn/zabbix官网仓库地址 http://repo.zabbix.com/zabbix/ http://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_…

Hi3861 OpenHarmony嵌入式应用入门--基于HI-12F开发板烧写程序

首先需要一个开发板&#xff0c;我已经在嘉立创上进行了开源&#xff0c;基于安信可hi-12f模块的开发板&#xff0c;集成了两个按键&#xff0c;一个三色灯&#xff0c;一个滑动变阻器&#xff0c;可外接一个0.96寸液晶。 【HI-12F】基于安信可hi-12f模块的开发板 - 嘉立创EDA…

借助Aspose.Email,使用 C# .NET 创建 PST 文件并填充内容

PST&#xff08;个人存储表&#xff09;文件是管理 Outlook 数据的重要组成部分&#xff0c;方便存储电子邮件、联系人、日历和其他项目。在 C# .NET 开发领域&#xff0c;创建和管理存储文件的过程对于各种应用程序至关重要。 在本文中&#xff0c;我们将探讨如何使用 C# .NE…

内窥镜窄带光

文章目录 NBI相关信息 NBI相关信息 第一不知道哪家有这个技术&#xff1f; 第二直接搜索找不到相关信息 第三只能搜企业官网 搜集到的与NBI&#xff0c;相关的信息如下 英美达医疗公司 https://www.innermed.com/index.php/gongsixinwen/139.html 新光维医疗公司 官网页面…

【Spring】1. Maven项目管理

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

【无标题】Pycharm执行报错

file 读取未指定utf-8编码&#xff0c;加上就好了 疑问&#xff1a;为什么 有的电脑可以直接跑呢&#xff1f;该电脑、Pycharm、工程&#xff0c;已经做了修改设置默认值&#xff0c;但是到新的电脑上&#xff0c;就需要重新设置&#xff0c;所以 file 读、写&#xff0c;最好…

鸿蒙轻内核调测-内存调测-内存泄漏检测

1、基础概念 内存泄漏检测机制作为内核的可选功能&#xff0c;用于辅助定位动态内存泄漏问题。开启该功能&#xff0c;动态内存机制会自动记录申请内存时的函数调用关系&#xff08;下文简称LR&#xff09;。如果出现泄漏&#xff0c;就可以利用这些记录的信息&#xff0c;找到…