Spring3+MyBatis3整合无法输出SQL语句问题的解决

12 篇文章 0 订阅
5 篇文章 0 订阅

项目使用Spring3+MyBatis3整合,但是控制台就是部署出SQL语句,网上找了很多资料,都说是Log4j配置文件的问题,修改了N 边Log4j配置文件依然无效。

除了SQL 语句,其他都能显示,纠结的很抓狂发火

我的Log4j的配置文件如下

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">  
  3. <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>  
  4.     <!-- ===================================================================== -->  
  5.     <!--  定义全局输出适配器                                                      -->  
  6.     <!-- ===================================================================== -->  
  7.     <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">  
  8.         <layout class="org.apache.log4j.PatternLayout">  
  9.             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%c]-[%t] %x - %m%n"/>  
  10.         </layout>  
  11.     </appender>  
  12.   
  13.     <!-- Mybatis and SQL -->  
  14.     <logger name="org.apache.ibatis" additivity="true">  
  15.         <level value="DEBUG"/>  
  16.         <appender-ref ref="consoleAppender"/>  
  17.     </logger>  
  18.   
  19.     <logger name="org.mybatis.spring" additivity="true">  
  20.         <level value="ERROR"/>  
  21.         <appender-ref ref="consoleAppender"/>  
  22.     </logger>  
  23.     <logger name="java.sql" additivity="true">  
  24.         <level value="DEBUG"/>  
  25.         <appender-ref ref="consoleAppender"/>  
  26.     </logger>  
  27.   
  28.     <logger name="java.sql.Connection" additivity="true">  
  29.         <level value="DEBUG"/>  
  30.         <appender-ref ref="consoleAppender"/>  
  31.     </logger>  
  32.   
  33.     <logger name="java.sql.Statement" additivity="true">  
  34.         <level value="DEBUG"/>  
  35.         <appender-ref ref="consoleAppender"/>  
  36.     </logger>  
  37.   
  38.     <logger name="java.sql.PreparedStatement" additivity="true">  
  39.         <level value="DEBUG"/>  
  40.         <appender-ref ref="consoleAppender"/>  
  41.     </logger>  
  42.   
  43.     <!-- Spring -->  
  44.     <logger name="org.springframework" additivity="true">  
  45.         <level value="ERROR"/>  
  46.         <appender-ref ref="consoleAppender"/>  
  47.     </logger>  
  48.   
  49.     <!-- ActiveMQ -->  
  50.     <logger name="org.apache.activemq" additivity="true">  
  51.         <level value="ERROR"/>  
  52.         <appender-ref ref="consoleAppender"/>  
  53.     </logger>  
  54.     <!-- ===================================================================== -->  
  55.     <!--  根日志记录器                                                          -->  
  56.     <!-- ===================================================================== -->  
  57.     <root>  
  58.         <level value="DEBUG"/>  
  59.         <appender-ref ref="consoleAppender"/>  
  60.     </root>  
  61. </log4j:configuration>  

最后,仔细查看启动时的输入发现了如下的错误提示

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). 
log4j:WARN Please initialize the log4j system properly.

于是,我想是不是这个地方出问题了呢,赶紧上网搜索解决这个问题的资料。网上找到一个解释:

地址:http://lveyo.iteye.com/blog/418376

这个提示应该是读入web应用程序的log4j.properties文件之前就报出来了。是在加载org.springframework.web.context.ContextLoader这个listener的时候没找到log4j的配置文件造成的。

仔细查看web.xml发现在加载org.springframework.web.context.ContextLoader这个listener之后才加载org.springframework.web.util.Log4jConfigListener,把log4j的配置放到org.springframework.web.context.ContextLoader之前,就可以解决这个问题了。

于是,我在web.xml配置文件中加入Log4j的配置,部分配置文件如下

[html]  view plain  copy
  1. <!--Log4j配置-->  
  2.     <context-param>  
  3.         <param-name>log4jConfigLocation</param-name>  
  4.         <param-value>/WEB-INF/log4j.xml</param-value>  
  5.     </context-param>  
  6.     <context-param>  
  7.         <param-name>log4jRefreshInterval</param-name>  
  8.         <param-value>60000</param-value>  
  9.     </context-param>  
  10.     <listener>  
  11.         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
  12.     </listener>  
  13.   
  14.     <!-- 扫描spring配置文件 -->  
  15.     <context-param>  
  16.         <param-name>contextConfigLocation</param-name>  
  17.         <param-value>classpath:spring/application-*.xml</param-value>  
  18.     </context-param>  
  19.   
  20.     <!-- 监听器 -->  
  21.     <listener>  
  22.         <listener-class>com.hanvon.iface.web.listener.WebAppEventListener</listener-class>  
  23.     </listener>  
  24. .......  

增加了上面的Log4j配置部分后,结果真的可以打印SQL 语句了,太高兴了得意!!!

我觉得,起作用的主要是下面的配置内容,这个配置正确设置了Log4j:

[html]  view plain  copy
  1. <context-param>    
  2.     <param-name>log4jConfigLocation</param-name>    
  3.     <param-value>/WEB-INF/log4j.xml</param-value>    
  4. </context-param>    
  5. <context-param>    
  6.     <param-name>log4jRefreshInterval</param-name>    
  7.     <param-value>60000</param-value>    
  8. </context-param>    
  9. <listener>    
  10.     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    
  11. </listener>  


部分SQL语句输出如下:

[plain]  view plain  copy
  1. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]  - ==>  Executing: SELECT COUNT(DISTINCT dev.ng_id) FROM dev_device dev WHERE dev.nt_state=?   
  2. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]  - ==>  Executing: SELECT COUNT(DISTINCT dev.ng_id) FROM dev_device dev WHERE dev.nt_state=?   
  3. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]  - ==> Parameters:   
  4. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]  - ==> Parameters:   
  5. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]  - ==>  Executing: SELECT COUNT(DISTINCT dev.ng_id) FROM dev_device dev WHERE dev.nt_state=?   
  6. [2013-06-06 21:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]  - ==> Parameters:   
  7. [2013-06-06 21:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]  - ==> Parameters: 1(Integer)  
  8. [2013-06-06 21:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]  - ==> Parameters: 1(Integer)  
  9. [2013-06-06 21:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]  - ==> Parameters: 1(Integer)  
  10. [2013-06-06 21:07:35.079]-[java.sql.ResultSet]-[http-8080-2]  - <==    Columns: COUNT(DISTINCT dev.ng_id)  
  11. [2013-06-06 21:07:35.079]-[java.sql.ResultSet]-[http-8080-2]  - <==    Columns: COUNT(DISTINCT dev.ng_id)  
  12. [2013-06-06 21:07:35.087]-[java.sql.ResultSet]-[http-8080-2]  - <==        Row: 11  
  13. [2013-06-06 21:07:35.087]-[java.sql.ResultSet]-[http-8080-2]  - <==        Row: 11  
希望我的经验能够帮助到大家!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个Spring Boot MyBatis的SQL Server代码下载,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Java开发工具和Maven构建工具。 2. 创建一个新的Spring Boot项目。你可以通过使用Spring Initializr来快速搭建一个基本的Spring Boot项目结构。在Spring Initializr的网站上选择你需要的项目配置,包括项目的名称、包名、Java版本等。点击生成项目按钮,然后下载生成的zip包。 3. 解压下载的zip包,在你选择的目录下打开命令行或终端窗口。 4. 进入解压后的项目目录,运行以下Maven命令来导入项目依赖: ``` mvn clean install ``` 5. 接下来,你需要在项目的pom.xml文件中添加MyBatis和SQL Server的依赖。例如,你可以添加以下依赖: ``` <dependencies> ... <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>8.4.1.jre11</version> </dependency> ... </dependencies> ``` 6. 在项目的配置文件(例如application.properties或application.yml)中添加SQL Server的连接信息,包括数据库URL、用户名和密码。例如,你可以添加以下配置: ``` spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydatabase spring.datasource.username=yourusername spring.datasource.password=yourpassword ``` 7. 创建一个MyBatis的Mapper接口和对应的映射文件,用于定义和执行SQL查询语句。你可以在Mapper接口中声明SQL查询方法,并且在映射文件中编写对应的SQL语句。 8. 在你的应用程序中使用自动注入注解(例如@Autowired)将Mapper接口注入到你的服务类或控制器类中。然后,你就可以在这些类中使用Mapper接口定义的方法来执行SQL查询了。 9. 最后,你可以启动你的Spring Boot应用程序,通过访问定义的接口来执行SQL查询操作。你可以使用Postman等工具来测试接口的响应结果。 希望以上步骤能够帮助你成功创建Spring Boot MyBatis的SQL Server代码,并实现相关的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值