java直接获取MyBatis将要执行的动态sql命令(不是拦截器方式)

目录

前言

一. 准备数据

1. 传输过来的json条件数据

2. mybatis 配置的动态sql

3. 想要的最终会执行的sql并返回给页面展示

二. 实现方式

三. 最终代码


前言

        1.在平常开发过程中,MyBatis使用时非常多的,一般情况下我们只需要在控制台看看MyBatis输出的日志,要不就是实现 MyBatis 提供的接口 Interceptor 来拦截,对执行前进行一些操作。

        2.但是有这么一种需求,将 MyBatis 的 sql 都配置到数据库里,相当于一个字符串,通过传输的 json 参数获取 MyBatis 解析 动态sql 获取最终sql,并返回给页面展示,是不是很小众的需求。

MappedStatement ms = configuration.getMappedStatement("com.路径.类名.方法名");
BoundSql boundSql = ms.getBoundSql(map);
String sql = boundSql.getSql();
System.out.println(sql);

        3.网上也没有太多案例,大部分都是此类只能解析静态sql的案例,很少有解析动态sql的案例,今天就遇到了,所以今天记录下是怎么实现的。

一. 准备数据

比方说我们有这么一组数据

1. 传输过来的json条件数据

{"id": "17484150668118547d7bd2c539749a378d8a69dfa26d","serialNum": 1,"courseId": "2024-2025-2-D571061023-075212","orderNum": 2,"list1": ["362D8FD7F24DABACE065020C29BC0833"],"name": "啦啦","way": "1","list2": [{"orderNum": 3,"id": "1748415080498a2142926e7e22c483e1f6e7a84b48387","name": "3哈3"},{"orderNum": 4,"id": "17484150985463b22fcccb983ead6a6bc8e4f11fdadcd6","name": "4哈4"}]
}

2. mybatis 配置的动态sql

BEGINinsert into t_aaaaaaa (id, course_id, name, serial_num, way, order_num, create_date, update_date)  values(#{id}, #{courseId}, #{name} , #{serialNum} ,  #{way} , #{orderNum}, sysdate, sysdate);<foreach collection="list1" item="item" index="index" >insert into t_bbbbbbbb (id, host_id, ass_id)values (sys_guid(), #{id}, #{item});</foreach><if test="list2 != null and list2.size > 0"><foreach collection="list2" item="item" index="index" >insert into t_cccccccc (id, course_id, host_id, order_num, create_date, update_date, name)values (sys_guid(), #{courseId}, #{id}, #{item.orderNum}, sysdate, sysdate, #{item.name});</foreach></if>
END;

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

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

相关文章

机器学习算法-决策树

今天我们用一个 「相亲决策」 的例子来讲解决策树算法&#xff0c;保证你轻松理解原理和实现&#xff01; &#x1f333; 决策树是什么&#xff1f; 决策树就像玩 「20个问题」猜谜游戏&#xff1a; 你心里想一个东西&#xff08;比如「苹果」&#xff09; 朋友通过一系列问题…

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略

1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…

【Elasticsearch】suggest

在Elasticsearch中&#xff0c;suggest 是一个非常强大的功能&#xff0c;用于实现自动补全、拼写纠错和模糊搜索等功能。它可以帮助用户更快地找到他们想要的内容&#xff0c;同时提升搜索体验。以下是关于 suggest 的详细使用方法和常见场景。 1\. Suggest 的基本概念 sugges…

[SAP] 如何查询当前屏幕的Tcode?

事务代码Tcode是SAP中到达特定屏幕的快捷路径 如何查询以下屏幕的事务码Tcode&#xff1f; 要浏览当前所使用的屏幕的事务码&#xff0c;可以选择System | Status 这里的事务代码是[VA22]&#xff0c;它是Change Quotation的事务代码

PostgreSQL的扩展 dblink

PostgreSQL的扩展 dblink dblink 是 PostgreSQL 的一个核心扩展&#xff0c;允许在当前数据库中访问其他 PostgreSQL 数据库的数据&#xff0c;实现跨数据库查询功能。 一、dblink 扩展安装与启用 1. 安装扩展 -- 使用超级用户安装 CREATE EXTENSION dblink;2. 验证安装 -…

ADB推送文件到指定路径解析

您执行的命令 adb push ota.zip /sdcard/Download 中&#xff0c;目标路径 /sdcard/Download 是您显式指定的&#xff0c;因此 ADB 会直接将文件推送到此位置。具体过程如下&#xff1a; 1. 命令结构解析 adb push&#xff1a;ADB 的推送指令。ota.zip&#xff1a;本地计算机上…

Linux 内核中 skb_orphan 的深度解析:从版本差异到核心机制

引言 在 Linux 内核网络子系统中,struct sk_buff(简称 skb)是管理网络数据包的核心数据结构。skb_orphan 作为其生命周期管理的关键函数,负责切断 skb 与所属 socket 的关联,确保数据包在复杂处理流程中的独立性。本文将从代码实现、版本差异、使用场景等多个维度,深入解…

03.MySQL表的操作详解

MySQL表的操作详解 MySQL 表的操作概述创建表 2.1 创建表的基本语法查看表结构修改表 4.1 新增列 4.2 修改列属性 4.3 修改列名 4.4 修改表名 4.5 删除列删除表 1. MySQL表的操作概述 MySQL表的操作是数据库开发和管理中的核心内容&#xff0c;主要涉及**数据定义语言&#…

Flink系列文章列表

把写的文章做一个汇总&#xff0c;会陆续更新的。 Flink流处理原理与实践&#xff1a;状态管理、窗口操作与容错机制-CSDN博客

【目标检测】【AAAI-2022】Anchor DETR

Anchor DETR&#xff1a; Query Design for Transformer-Based Object Detection 锚点DETR&#xff1a;基于Transformer的目标检测查询设计 论文链接 代码链接 摘要 在本文中&#xff0c;我们提出了一种基于Transformer的目标检测新型查询设计。此前的Transformer检测器中&am…

apptrace 的优势以及对 App 的价值

官网地址&#xff1a;AppTrace - 专业的移动应用推广追踪平台 apptrace 的优势以及对 App 的价值​ App 拉起作为移动端深度链接技术的关键应用&#xff0c;能实现从 H5 网页到 App 的无缝跳转&#xff0c;并精准定位到 App 内指定页面。apptrace 凭借专业的技术与丰富的经验…

16-前端Web实战(Tlias案例-部门管理)

在前面的课程中&#xff0c;我们学习了Vue工程化的基础内容、TS、ElementPlus&#xff0c;那接下来呢&#xff0c;我们要通过一个案例&#xff0c;加强大家对于Vue项目的理解&#xff0c;并掌握Vue项目的开发。 这个案例呢&#xff0c;就是我们之前所做的Tlias智能学习辅助系统…

Python爬虫实战:研究Goutte库相关技术

1. 引言 1.1 研究背景与意义 随着互联网信息的爆炸式增长,如何高效、准确地获取和分析 Web 数据成为重要研究课题。网络爬虫作为自动获取网页内容的关键技术,在搜索引擎优化、舆情分析、市场调研等领域具有广泛应用。然而,现代网站越来越多地采用 JavaScript 动态渲染技术…

Python----目标检测(《基于区域提议网络的实时目标检测方法》和Faster R-CNN)

一、《基于区域提议网络的实时目标检测方法》 1.1、基本信息 标题&#xff1a;Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者&#xff1a;任少卿&#xff08;中国科学技术大学、微软研究院&#xff09;、何凯明&#xff08;微软研究…

吴恩达讲解MCP基础概念

简介 MCP 是一个开放协议 标准化了您的语言模型应用如何获取工具和数据资源的上下文。基于客户端-服务器架构,它定义了您的语言模型应用中的MCP客户端与MCP服务器之间的通信方式,MCP服务器提供工具 数据资源和提示模板给您的应用,自Anthropic于2024年11月推出MCP以来,MCP生…

Git入门到精通:30分钟掌握核心技巧

目录 一、基础理论片 Git简介 Git安装 Git仓库 Git基本命令用法 仓库别名 二、实操命令篇 远程分支 分支的新建和合并 实操演示 1 本地新建仓库 2 gitee新建仓库 3 建立关系 4 新建分支 5 开发新功能 6 推送新分支 7 合并新分支到主分支 三、可视化工具篇 G…

零基础设计模式——结构型模式 - 代理模式

第三部分&#xff1a;结构型模式 - 代理模式 (Proxy Pattern) 在学习了享元模式如何通过共享对象来优化资源使用后&#xff0c;我们来探讨结构型模式的最后一个模式——代理模式。代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 核心思想&#xff1a;为其…

【OSS】 前端如何直接上传到OSS 上返回https链接,如果做到OSS图片资源加密访问

使用阿里云OSS&#xff08;对象存储服务&#xff09;进行前端直接上传并返回HTTPS链接&#xff0c;同时实现图片资源的加密访问&#xff0c;可以通过以下步骤实现&#xff1a; 前端直接上传到OSS并返回HTTPS链接 设置OSS Bucket&#xff1a; 确保你的OSS Bucket已创建&#xf…

TDenigne 集群可视化管理

可视化管理工具 为方便用户更高效地使用和管理 TDengine&#xff0c;TDengine 3.0 版本推出了一个全新的可视化组件 taosExplorer。这个组件旨在帮助用户在不熟悉 SQL 的情况下&#xff0c;也能轻松管理 TDengine 集群。通过 taosExplorer&#xff0c;用户可以轻松查看 TDengi…

Centos7安装gitlab

环境准备&#xff1a; 操作系统&#xff1a;Centos7 内存&#xff1a;2G以上 磁盘&#xff1a;50G 安全&#xff1a;关闭防火墙&#xff0c;selinux 1、安装GitLab所需依赖 yum -y install policycoreutils openssh-server openssh-clients postfix 2、设置postfix开机自启…