不需要配置log4j , 调试打印ibatis执行的sql语句和参数

背景:如果不想通过配置log4j的方式来打印ibatis执行的sql语句和参数param,可以使用如下方法在控制台打印sql语句和参数

public static void main(String[] args) {
        try {

            //声明配置文件的名称(映射文件被定义在其中)

            String resource = "com/test/tele/bean/iBatis-config-test.xml";

            //利用工具类Resources来读取到配置文件

            Reader reader = Resources.getResourceAsReader(resource);

            //创建SqlMapClient接口的变量实例

            SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

            Map paramMap = new HashMap();
            paramMap.put("isDisabled","0");
            paramMap.put("belongType","1"); 

            List list = sqlMap.queryForList("T_Process.selectExtDeptInfoByMap", paramMap);
            //debug 获取动态运行时sql以及参数
            SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient) sqlMap).getDelegate();
            MappedStatement ms = delegate.getMappedStatement("T_Process.selectExtDeptInfoByMap");//这个getXXSQL就是你想要获取的,在xml文件中定义的sql语句的id
            Sql sql = ms.getSql();
            RequestScope requestScope = new RequestScope();
            requestScope.setStatement(ms);
            String sqlStr = sql.getSql(requestScope,paramMap);

            Object[] sqlParam = sql.getParameterMap(requestScope, paramMap).getParameterObjectValues(requestScope, paramMap);
            System.out.println("运行时sql为" + sqlStr);
            for (int i = 0; i < sqlParam.length; i++) {
                         System.out.println("第[" + (i + 1) + "]个参数为:" + sqlParam[i]);
            }

        } catch (Exception e) {

            e.printStackTrace();

        }
    }
    

参考内容:

  https://blog.csdn.net/libertine1993/article/details/52461801

  https://blog.csdn.net/njuptsoz/article/details/83334583

原文地址:https://www.cnblogs.com/leite/p/10245492.html

时间: 2024-10-12 15:51:11

不需要配置log4j , 调试打印ibatis执行的sql语句和参数的相关文章

打印Ibatis最终的SQL语句

在项目开发时都大家都希望将SQL在后台打印出来,以帮助开发以及后续的bug修改.如果用JDBC那么可以方便的打印,可使用ibatis就不知道怎么办了,最近在网上找了一段log4j的配置可以很保姆的处理这个问题.这里贴出来给大家参考一下. log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.s

怎样在控制台或者日志打印输出JDBC执行的sql语句

今天用jdbc preparestatement 写sql语句查询,但是在执行的过程中实际查询出的结果和预期的结果不一致,然后就在想有什么办法能够在控制台或者Log4j日志输出最终执行的SQL语句,以便于调试.如果是hibernate可以通过配置show_sql 为 true 在控制台显示执行的SQL,因为使用的是纯JDBC的写法,然后自己在程序中直接通过System.out.println(sql);打印SQL语句,然后又打印参数,这种方式确实是可以.但是,遇到insert语句或者Update

ibatis/mybatis显示sql语句 log4j.properties配置文件

将ibatis/mybatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: ### 设置Logger输出级别和输出目的地 ### log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender #log4j.appender.stdout.Target=System.err log4j.a

MySQLdb 防SQL注入,同时打印已执行的SQL

>>> import MySQLdb >>> conn=MySQLdb.connect(user='root',passwd='root') >>> cur=conn.cursor() >>> sql = "select user from mysql.user where user='%s' and password = '%s' "; >>> cur.execute(sql % ('aaa',

打印出Ibatis最终的SQL语句

做项目时遇到这样的需求,希望能打印出最终数据库执行的SQL语句,一般遇到这些有一定通用性的问题,我都会到Appfuse中去找找例子,结果这次没有成功.它是有相关的配置,但是好像没有用,我也就没有深查下去,我想这种问题网上肯定有人遇到过,只要找到这个人就行了.经过换不同的关键字,我最后找到了如下的配置. log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log

LoadRunner 执行单句SQL语句

LoadRunner 执行单句SQL语句 Action() { int NumRows=0; int i=1; //建立数据库连接 lr_db_connect("StepName=DatabaseConnection", "ConnectionString=Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sc;Initial Catalog=EGMIS_NET;Data Source=19

EF-记录程序自动生成并执行的sql语句日志

在EntityFramework的CodeFirst模式中,我们想将程序自动生成的sql语句和执行过程记录到日志中,方便以后查看和分析. 在EF的6.x版本中,在DbContext中有一个Database属性,Database.Log就是用来专门记录这种日志的. Database.Log是一个Action<string>委托,给其赋值一个函数就行. 代码如下: using Model; using System; using System.Collections.Generic; using

用Hibernate框架把hql生成可执行的sql语句-Oracle方言

引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方式,又不希望有太多服务,所以就开始网络找资料整理编码了.大概花了一个多星期完成了这个任务,现在整理出来与大家分享,也是自己知识的梳理. 1.需要导入相关的jar包: [按字母顺序排列] antlr-2.7.5H3.jar 语言转换工,Hibernate利用它实现 HQL 到 SQL的转换 asm.j

监控mysql执行的sql语句

linux平台 为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句,可以在/etc/mysqld中添加如下: log =/usr/local/mysql/var21005/mysql.log 就可以使用: tail -f mysql.log 来监控了  www.xxx.com 如果需要监控慢查询可以添加如下内容: log-slow-queries = /usr/local/mysql/var21005/slowquery.log long_query_time = 1 windows