idea mybatis的sql语句日志输出

常用的日志输出为Log4j,但按照常规的配置,涉及mybatis那部分日志不能打印出来的;由于没有日志的输出,开发人员很难从控制台中迅速找出相应的sql语句,对调试和找错误带来了一定的困扰,针对这个问题,我们需要额外的配置以达到日志的输出

常见的两种方法为:

在日志配置文件(log4j.properties)中增加将mybatis那部分日志级别设置为DEBUG,配置如下:

#mybatis部分
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
#与sql相关
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

注意:另外需要在定义LOG输出级别时,把DEBUG级别的也作为日志输出的一部分,附个人完整Log4j配置:

#定义LOG输出级别  
log4j.rootLogger=DEBUG,INFO,Console,File  
#定义日志输出目的地为控制台  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#可以灵活地指定日志输出格式,下面一行是指定具体的格式  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m  %l%n
 
#文件大小到达指定尺寸的时候产生一个新的文件  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#指定输出目录  
log4j.appender.File.File = logs/ssm.log  
#定义文件最大大小  
log4j.appender.File.MaxFileSize = 10MB  
#输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m  %l%n
#mybatis日志配置 需要将日志的输出级别调为debug
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
#与sql相关
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

配置根Logger,log4j.rootLogger = [ level ] , appenderName
【level】是日志的级别,分别有debug -> info -> warn -> error 四种日志级别;
【appenderName】,配置日志的输出目录,同一个日志可以配置多个输出目的地;
配置log输出目的地:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

2、在Mybatis的配置文件中增加setting配置

个人在搭ssm框架中,mybatis-config.xml文件是省略的,需要后面增加,详细如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration   
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>

日志部分,增加name为logImpl的setting配置,value属性(即日志的打印方式)可选有:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根据自己的需要进行配置,但个人在测试的过程中,只有值为STDOUT_LOGGING时,日志才有输出,此处存在疑问,有哪位大神能指点一下么?

        另外settings的更多参数可以参考官网文档:

        http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

注意:在增加mybatis-config.xml后,需要在spring与mybatis的整合配置文件(spring-mybatis.xml)中增加映射才可生效,如下:

<!-- spring和MyBatis整合-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自动扫描mybatis配置文件 -->
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:com/merch/mapping/*.xml"></property>
</bean>

输出如下:

## END 
## BEGIN  name=Tomcat 7.0.94 seq=00000034 time=2021-09-15 14:13:11
SELECT *
FROM (
	SELECT row_.*, rownum AS rn
	FROM (
		SELECT 
Releasing transactional SqlSession [org.apache.ibatis.sessionb2]
Fetched SqlSession [org.apache.ibatis.session.defa03cb2] from current transaction
ooo Using Connection [oracle.jdbc.driver.T4CConnection@326c4fb9]
==>  Preparing: select * from 
==> Parameters: 0(String), 20210617(String), 20210915(String), 004(String), 004(String)
<==    Columns:
<==        Row: 7
<==        Row: 3

参考: https://www.cnblogs.com/zoro-zero/p/12175883.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mybatis是一种流行的Java持久化框架,它通过提供一个简单的编程模型和动态SQL实现了将关系型数据库和对象映射起来的功能。在使用Mybatis时,SQL语句是至关重要的,因为它们是从数据库中检索数据的载体。在编写SQL时,我们会遇到黄线,这通常表示SQL语句有一些问题,需要我们检查和修复。 一些可能导致黄线出现的原因包括语法错误、参数类型不匹配、表或字段名称拼写错误等等。为了解决这些问题,我们可以通过查看错误消息、仔细检查代码、使用MySQL客户端工具等方法来排除问题。除此之外,我们还可以利用Mybatis提供的日志和调试功能来定位并解决黄线问题。 总之,黄线是MybatisSQL编写过程中常遇到的一些问题,我们需要借助工具和技巧来解决它们,以确保我们能够从数据库中正确地检索到数据。 ### 回答2: Mybatis是一种优秀的持久层框架,它能够极大地简化我们在Java应用中使用SQL的代码工作,同样让DBA更加容易管理SQL语句。而黄色的线是Mybatis SQL Mapper XML中的一种标记,它的作用是分隔不同的SQL语句,让SQL语句更容易阅读和维护。 在Mybatis SQL Mapper XML中,我们可以使用“<sql>”标签来定义一个SQL片段,然后在其他SQL语句中使用“<include>”标签来导入这个SQL片段。这样的好处在于提高了SQL语句的可读性和可维护性,同时也减少了代码的冗余。 黄线在Mybatis SQL Mapper XML中的作用类似于语法高亮,使得我们能够更容易地看清SQL语句的各个部分,从而更好地理解SQL语句的含义。它是Mybatis团队为开发人员提供更好的开发体验而设计的。 因此,使用Mybatis框架可以有效地提高Java应用的开发效率和可维护性。而黄线则是Mybatis框架中的一个重要特性,可以让我们更加方便地进行SQL开发、理解和维护。 ### 回答3: Idea是一种常见的Java IDE,它对于Java项目的开发和调试都非常方便。MyBatis是一种Java持久层框架,它提供了一种简单而强大的方式来访问数据库SQL则是一种结构化查询语言,用于对数据库进行操作。然而,在使用Idea开发MyBatis项目时,可能会遇到黄线的问题。 黄线通常表示Idea对于某些代码的警告或错误提示。在MyBatis中,使用XML文件来配置SQL语句,如果XML文件中出现了错误,Idea就会在该处添加黄色的波浪线。这时需要仔细检查XML文件的语法,确保没有错误。 另外,黄线还可能表示了代码中存在潜在的问题。例如,可能使用了过时的方法或类,或者变量没有被正确地初始化。在这种情况下,需要检查代码并进行修复,以避免潜在的错误和异常。 总之,当我们在使用Idea开发MyBatis项目时遇到黄线问题时,需要认真检查代码和XML文件,并且修复其中存在的问题。这样可以确保项目的正确性和稳定性,使得我们能够更好地完成Java项目的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值