mysql控制台 打印_控制台打印完整sql(包含参数)

mysql控制台 打印_控制台打印完整sql(包含参数)之前看到的分享基本围绕 日志 功能展开 尽管有些已经挺简单了 但还是觉得可以在操作步骤上简化 现介绍如下 一 基本需求 开发阶段 需要检查最终执行的 sql 语句 不仅仅是带有 的预编译语句 还应该包括各个字段的参数 拒绝形如 select fromworkerwh orname 改造目标 select fromworkerwh 2

之前看到的分享基本围绕“日志”功能展开,尽管有些已经挺简单了,但还是觉得可以在操作步骤上简化。现介绍如下:

一、基本需求:开发阶段,需要检查最终执行的sql语句——不仅仅是带有“?”的预编译语句,还应该包括各个字段的参数。

拒绝形如:select * from worker where id = ?  or name = ?

改造目标:select * from worker where id = 2 or name = WangWei

二、基本思路:为数据源插件DruidPlugin添加过滤Filter。

三、步骤:

1、新建类MyDruidFilterpublic class MyDruidFilter extends FilterAdapter {

@Override

public void statement_close(FilterChain chain, StatementProxy statement) throws SQLException {

super.statement_close(chain, statement);

Map lParameters = statement.getParameters();

String lSql = statement.getBatchSql();

if(StrKit.notBlank(lSql)){

for (Map.Entry lEntry : lParameters.entrySet()){

JdbcParameter lValue = lEntry.getValue();

if(lValue == null){

continue;

}

Object lO = lValue.getValue();

if(lO == null){

continue;

}

String lS = lO.toString();

lSql = lSql.replaceFirst(“\\?”,lS);

}

System.out.println(“Sql = ” + lSql);

}

}

}

注意:1)这个类继承了FilterAdapter。2)这里重载方法有很多选择,并非一定要选statement_close

2、项目的Config的ConfigPlugin(Plugins me)中进行适当改写@Override

public void configPlugin(Plugins me) {

// 配置数据库插件

DruidPlugin druidPlugin = getDruidPlugin();

if (prop.getBoolean(“devMode”, false)){

//打印完整sql语句,核心语句就这一句

druidPlugin.addFilter(new MyDruidFilter());

}

。。。

}

仅两步!即可达成目标!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178994.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:03
下一篇 2026年3月26日 下午4:04


相关推荐

  • actually啥意思(actually exactly)

    TherecognizedSignatureredsoleandhighyourhighheelbothprocessedthedistinctivepopulartopfeaturesof…

    2022年4月10日
    73
  • css cursor 属性有哪些常见用法_鼠标样式属性讲解

    css cursor 属性有哪些常见用法_鼠标样式属性讲解

    2026年3月16日
    2
  • 阿里云服务器怎么开放端口_云服务器开启端口

    阿里云服务器怎么开放端口_云服务器开启端口阿里云服务器如何开放端口,这里我将开放8082端口,我们来看下吧方法/步骤 登录阿里云服务器并进入控制台,点击【云服务器ECS】。 在【云服务器ECS】点击【实例】并跳转到实例列表。 在实例列表找到要开放端口的云服务器实例。并点击后面的【更多】–》【网络和安全组】–》【安全组配置】。 在【本实例安全组】内点击【配置规则】打开【安全组规则】。这里有出\入的方向,这里我开放的是8082端口,属于入方向的。在这里可以新增规则,这里为了方便直接对已有的规

    2022年10月2日
    4
  • 生产计划管理软件有哪些?哪个好用_智能生产计划管理

    生产计划管理软件有哪些?哪个好用_智能生产计划管理生产计划管理软件有哪些?哪个好?生产计划管理,一般是指企业对生产活动的计划、组织和控制工作。生产计划管理软件可提高生产效率、提升品质、降低成本等。对企业管理意义深远。​生产计划管理软件介绍:MES制造执行系统​MES系统是一套面向制造企业车间执行层的生产信息化管理系统。是生产工业常见的生产管理软件,他可以为企业提供包括制造数据管理、计划生产调度管理、库存管理以及质量管理,同时还有人力资源管理…

    2022年10月5日
    7
  • Source Insight 4.0 序列号 license文件

    Source Insight 4.0 序列号 license文件安装程序下载在官网上下载SourceInsight4.0的安装程序.目前版本4.00.0098可用30天的试用安装首次启动选择授权方式,这里选择第二个选项,30天试用。点击下一步,输入名称、公司或组织名称、邮箱信息,申请30天的试用。输入完成后,点击下一步,直到安装完成。修改sourceinsight4.exe用16进制编辑器(sublimetext)打开s…

    2022年7月26日
    385
  • 阿里Java高级工程师面试题(含答案)

    阿里Java高级工程师面试题(含答案)1,java堆,分新生代老年代,新生代有Eden,fromsurviver,tosurviver三个空间,堆被所有线程共。eden内存不足时,发生一次minorGC,会把fromsurvivor和eden的对象复制到tosurvivor,这次的to survivor就变成了下次的fromsurvivor,经过多次minorGC,默认15次,达到次数的对象会从survivor…

    2022年5月2日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号