`

修改ibatis源码输出sql日志

 
阅读更多

1. 下载ibatis源码ibatis-2.3.4.726.zip

2. 解压后有个jar-dependencies.txt,可以查看ibatis的依赖包,其中jdk需要1.5,不是文档中写的1.4

3. 解压src/ibatis-src.zip,下载ibatis的所有依赖包,安装jdk1.5,就可以修改ibatis源码了

4. 找到com.ibatis.sqlmap.engine.execution.SqlExecutor类,建一个printLog方法,代码如下:

 

// 打印日志
  private void printLog(PreparedStatement ps, Object[] parameters, String sql) throws SQLException {
	  int count = ps.getParameterMetaData().getParameterCount();
      for (int i = 0; i < count; ++i) {
        if (parameters[i] instanceof Date)
          sql = sql.replaceFirst("\\?", "'" + dateFormat.format((Date)parameters[i]) + "'");
        else if (parameters[i] != null)
          sql = sql.replaceFirst("\\?", (parameters[i].getClass().getName().equals("java.lang.String")) ? "'" + 
            parameters[i].toString() + "'" : parameters[i].toString());
        else {
          sql = sql.replaceFirst("\\?", "null");
        }
      }
      String trimSql = sql.toLowerCase().trim();
      String outputSql = sql.replaceAll("[\t ]+", " ");
      if ((trimSql.startsWith("update")) || (trimSql.startsWith("insert")) || (trimSql.startsWith("delete"))) {
        if (!(trimSql.endsWith(";"))) {
          outputSql = outputSql + ";";
        }
      }
      log.info(outputSql);
  }

5. 在executeUpdate,executeQuery方法里调用上面的打印日志方法.

6. 打成jar包,替换原来的ibatis-2.3.4.726.jar,就大功告成了.

7. ibatis的源码及依赖包见附件.

 

分享到:
评论

相关推荐

    打log4j日志-ibatis的sql输出

    总结起来,本文介绍了如何结合Log4j和Ibatis来输出SQL日志。通过调整Log4j的配置,开发者可以方便地查看并理解应用程序中的数据库操作,从而提高代码的可维护性和性能。在实际开发中,合理地使用日志记录能够极大地...

    ibatis打印sql

    设置完日志级别后,当iBATIS执行SQL时,相关的SQL语句和参数将按照配置的格式打印到控制台或指定的日志文件中。这有助于开发者了解SQL执行的具体情况,包括绑定的参数值、查询结果等。 4. **动态SQL**: iBATIS...

    使用P6spy打印ibatis执行的SQL语句

    它将接收到的原始SQL语句进行处理,然后将其输出到日志文件,供开发者查看和分析。这对于跟踪性能问题、检查SQL语句是否正确以及优化数据库操作非常有用。 接下来,我们将分步骤介绍如何配置P6Spy以打印iBatis的SQL...

    ibatis 框架源码剖析 书籍源代码 带有详尽注释

    本书籍“iBATIS 框架源码剖析”提供了对iBATIS框架深入理解的机会,通过源代码分析,帮助读者掌握其内部工作原理。源代码带有详尽的注释,使得学习过程更为直观和高效。 iBATIS的核心概念主要有以下几个方面: 1. ...

    传智ibatis视频源码

    7. **插件机制**:Ibatis允许开发者自定义插件,拦截SQL执行过程,实现如日志记录、性能分析等功能,扩展性极强。 8. **事务管理**:Ibatis支持手动和自动的事务管理,理解何时提交、回滚事务,以及事务的隔离级别...

    ibatis-2 源代码

    下载的iBatis源码通过SVN获取,意味着可以查看其版本历史,了解每个版本的修改细节。 通过深入研究iBatis-2的源代码,我们可以理解其设计思想,学习如何构建高效的数据访问层,同时也能为现代ORM框架如MyBatis的...

    IBatis.Net流风通用管理框架源码.rar

    IBatis.Net是一个轻量级的持久层框架,它提供了数据库访问的映射功能,帮助开发者将SQL语句与业务逻辑分离,实现数据访问层的解耦。 【描述】描述中提到的"IBatis.Net流风通用管理框架源码"意味着这是一个包含了...

    SpringIbatis源码

    AOP则允许我们在不修改已有代码的情况下,对程序进行横切关注点的处理,如日志记录、事务管理等。在Spring 3.1.4中,这些特性得到了进一步优化和完善。 iBatis框架则专注于数据访问层,它将SQL语句与Java代码分离,...

    Ibatis源代码(ibatis-src.zip)

    Ibatis遵循Apache License 2.0,这意味着你可以自由地使用、修改和分发源代码,但需遵守特定的条款,如保持原有的版权信息和提供修改记录等。 `META-INF`目录是Java标准的元数据存放位置,它通常包含服务配置、类...

    ibatis类型

    9. **插件机制**: iBATIS提供了一种插件机制,可以拦截SQL执行过程中的各种行为,比如添加日志、性能监控等。 10. **缓存机制**: iBATIS支持本地缓存和二级缓存,可以提高数据读取速度,减少数据库压力。 通过上述...

    mybatis,ibatis,hibernate 显示查询SQL

    MyBatis、iBatis和Hibernate在显示查询SQL方面,都依赖于日志系统的配置。MyBatis和iBatis更注重灵活性,适合需要自定义SQL的场景;而Hibernate则提供了更全面的ORM解决方案,适合大型项目。理解这些框架的SQL显示...

    根据mybatis/ibatis sqlmapper文件解析生成数据库表

    标题 "根据mybatis/ibatis sqlmapper文件解析生成数据库表" 暗示了我们将会探讨一个关于MyBatis或iBatis框架的工具,它能够解析SQL映射文件并根据这些文件自动生成数据库表。这个过程对于快速构建数据库模型,尤其是...

    struts1.2 spring2 ibatis 集成项目实战源码

    再者,iBatis是一个持久层框架,它提供了一个SQL映射文件,将SQL语句与Java代码分离,降低了数据库操作的复杂性。在iBatis中,我们可以通过XML或注解定义SQL语句,与Java对象进行绑定,实现动态SQL。在Spring与...

    struts2+spring2+ibatis集成

    **iBatis** 是一个SQL映射框架,它将SQL语句和Java代码分离,使得开发者可以更自由地编写复杂的SQL而无需受到ORM框架的限制。iBatis通过XML配置文件或注解来定义SQL语句,与Spring2整合后,可以使用Spring的DAO接口...

    spring+ibatis的Java项目demo项目源码

    本项目源码提供了一个完整的 Spring + iBATIS 的 Demo 示例,旨在帮助开发者理解和学习如何将这两个框架集成到一个Java项目中。下面将详细介绍这个项目的相关知识点。 **Spring 框架** Spring 是一个全面的后端开发...

    iBATIS3 GA.源码,含案列

    7. **插件机制**: iBATIS允许开发者创建自定义插件,对执行的SQL语句进行拦截,实现如性能监控、日志记录等功能。 在提供的"ibatis-core-3.0-bundle.zip"中,可能包含了以下组件: - iBATIS的核心库,包含主要的...

    ibatis-2.3.3.720.jar

    6. **插件支持**:Ibatis允许用户自定义插件,可以通过拦截器对SQL执行过程进行扩展,如性能分析、日志记录等。 7. **结果集处理**:支持多种结果集处理方式,包括Map、List、单个对象以及自定义的Java集合类,便于...

    ibatis-sqlMap相关参考

    8. **源码分析**:深入Ibatis源码,理解其执行流程和优化技巧。 9. **工具支持**:了解IDE中对Ibatis的支持,如插件安装和配置,以及如何利用它们提高开发效率。 通过以上知识点的学习,开发者能更好地掌握Ibatis-...

Global site tag (gtag.js) - Google Analytics