有两种方法
方法一:修改log4j的配置文件,添加以下内容:
# SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
方法二:在项目中使用p6spy(这里先假定在项目中使用了spring,当然不使用spring也是可以使用这个包查看sql的,不过配置就不是这样配置了)
去http://www.p6spy.com/survey.html下载p6spy-install.zip,解压里面的p6spy.jar到/web-inf/lib目录中
1. 在spring的配置文件中添加P6DataSource。列出部分配置代码如下:
<!-- 配置数据源,这里数据源使用的是c3p0 -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${connection.driver_class}" />
<property name="jdbcUrl" value="${connection.url}" />
<property name="user" value="${connection.username}" />
<property name="password" value="${connection.password}" />
<property name="minPoolSize" value="${c3p0.minPoolSize}" />
<property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
<property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
<property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
<property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
<property name="maxStatements" value="${c3p0.maxStatements}" />
<property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}" />
<property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}" />
<property name="breakAfterAcquireFailure" value="${c3p0.breakAfterAcquireFailure}" />
<property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}" />
</bean>
<!-- spy dataSource -->
<bean id="spyDataSource" class="com.p6spy.engine.spy.P6DataSource">
<constructor-arg>
<ref local="dataSource"/>
</constructor-arg>
</bean>
<!-- sqlMapClent 配置 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="spyDataSource" />
</bean>
2. 在下载的p6spy-install.zip包中找到spy.properties,复制到classpath中,并且修改以下参数。
#realdriver=org.gjt.mm.mysql.Driver #第54行注释掉
dateformat=yyyy-MM-dd HH\:mm\:ss,SSS #输出的时候加上时间,方便查看
#appender=com.p6spy.engine.logging.appender.Log4jLogger #不清楚干嘛用的,没用,注释掉
appender=com.p6spy.engine.logging.appender.StdoutLogger #在控制台输出,一般我们都用控制台输出
#appender=com.p6spy.engine.logging.appender.FileLogger #输出在文件里,这样控制台上就看不到了
logfile=d:/logs/IbatisDemo- spy.log #sql语句的输出位置,只有appender选择的是文件的时候,这个选项有效
log4j.logger.p6spy=warn,STDOUT #把info改成warn,少看些没用的信息
一般有用的配置就这些了,还有其它的一些参数没去研究是什么用处,有空再研究研究。
好了,配置好以上内容,在代码执行到数据库操作的时候,p6spy就会自动在控制台输出sql语句了,不只可以在ibatis上使用,在hibernate上也可以用,在hibernate上用的时候,就不用再去看它自动生成的那难看的sql语句了
分享到:
相关推荐
在使用iBatis(现为MyBatis)作为持久层框架进行开发时,有时我们需要调试SQL语句,以便查看执行的SQL、优化性能或者解决查询问题。本文将详细讲解如何在iBatis日志信息中打印SQL语句,以便更好地理解和优化数据库...
iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是通过XML文件来配置的。下面是16个常用的iBatis SQL语句,涵盖了基本的CRUD(Create、...
### iBatis中的动态SQL语句详解 #### 引言 在进行数据库操作时,我们经常需要根据不同的条件构建不同的SQL语句。这种需求在实际开发中极为常见,尤其是在处理复杂的查询逻辑时。iBatis(现在通常被称为MyBatis)...
标题与描述概述的知识点主要集中在iBATIS框架的SQL映射技术上,特别是针对不同类型的输入参数如何在iBATIS中构建SQL语句。以下是对这些知识点的详细展开: ### iBATIS SQL映射技术概览 iBATIS是早期流行的Java持久...
本文将详细探讨如何使用P6Spy来打印iBatis(现为MyBatis)执行的SQL语句,以便进行性能分析和调试。 首先,我们需要了解P6Spy的工作原理。P6Spy通过替换JDBC驱动,将自己插入到应用程序和数据库之间,监听所有的SQL...
默认情况下,Ibatis并不自动打印执行的SQL,但可以通过设置log4j、logback或其他日志系统的配置,启用日志输出,从而查看应用程序运行时执行的SQL语句。例如,如果你使用的是log4j,可以在配置文件中添加以下内容: ...
WAS 上 log4j 日志不能输出(ibatis)sql 语句解决办法 在部署到 WAS 服务器上的 CMSII 系统中,ibatis 的 sql 语句不能输出日志的问题。解决该问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下...
根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让...
### ibatis SQL语句编写详解 #### 一、引言 在软件开发过程中,数据库操作是必不可少的一部分。Ibatis(现称为MyBatis)作为一款优秀的持久层框架,提供了非常灵活的方式来处理SQL语句,使得Java开发者能够更加...
用Ibatis时,配置sql语句时候 如果直接从sql里面把语句拷出来,玩玩格式不严谨,我写了这个工具来帮助我们格式化sql语句
通过java程序查看ibatis配置文件中的sql语句(注:无法查看变量值)
因为要下载其它的文件,所以从网站复制了一些其它的资源进行上传。但是这个资源是相当有用的。这里感谢之前总结相关技术的人员。谢谢
在默认情况下,Ibatis并不会自动打印执行的SQL语句,但通过配置,我们可以使Ibatis在运行时输出SQL,这对于调试和性能分析非常有帮助。 要启用Ibatis的SQL日志记录,你需要在Ibatis的配置文件(通常为`mybatis-...
标题 "ibatis打印sql" 涉及到的是在使用iBATIS(一个轻量级的持久层框架)时如何调试和查看SQL语句的方法。iBATIS允许开发者编写SQL语句并将其与Java代码集成,以实现灵活的数据访问。在开发过程中,为了调试和优化...
根据提供的文件信息,本文将对ibatis常用的SQL语句进行详细的解析与说明。这些SQL语句主要用于Oracle数据库中,涉及到了删除、插入以及查询等基本操作,并且在ibatis框架中实现了参数化处理。 ### 一、删除操作 ...
2. **提高性能**:预编译的SQL语句可以在数据库中缓存,多次执行相同结构但不同参数的查询时,可以显著提高执行效率。数据库只需解析一次SQL模板,然后用新参数替换问号即可。 3. **减少错误**:动态构建SQL字符串...
iBatis是一个轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码直接结合,提供了灵活的数据访问接口。这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和...
### ibatis SQL语句对条件中特殊字符% # 处理 在开发过程中,经常会遇到SQL查询时需要处理字符串中的特殊字符的情况。特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,...
iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的、独立的片段,然后根据不同的条件组合这些片段生成最终的SQL语句。这可以提高代码的可重用性和灵活性。 例如,在上面的代码中,我们定义了三个动态SQL片段...
根据MyBatis或iBatis的SQLMapper文件解析生成数据库表,通常是指通过解析MyBatis或iBatis的SQLMapper文件中的SQL语句,然后根据这些SQL语句来生成对应的数据库表结构。这样的需求可能源于需要将已有的SQLMapper文件...