Debug查看Mybatis相关信息

SqlSessionTemplate 内部类SqlSessionInterceptor #invoke()方法

路径:
org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor#invoke

         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession(SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this.executorType, SqlSessionTemplate.this.exceptionTranslator);

        Object unwrapped;
        try {
        Object result = method.invoke(sqlSession, args);
        if (!SqlSessionUtils.isSqlSessionTransactional(sqlSession, SqlSessionTemplate.this.sqlSessionFactory)) {
        sqlSession.commit(true);
        }

        unwrapped = result;
        } catch (Throwable var11) {
        unwrapped = ExceptionUtil.unwrapThrowable(var11);
        if (SqlSessionTemplate.this.exceptionTranslator != null && unwrapped instanceof PersistenceException) {
        SqlSessionUtils.closeSqlSession(sqlSession, SqlSessionTemplate.this.sqlSessionFactory);
        sqlSession = null;
        Throwable translated = SqlSessionTemplate.this.exceptionTranslator.translateExceptionIfPossible((PersistenceException)unwrapped);
        if (translated != null) {
        unwrapped = translated;
        }
        }

        throw (Throwable)unwrapped;
        } finally {
        if (sqlSession != null) {
        SqlSessionUtils.closeSqlSession(sqlSession, SqlSessionTemplate.this.sqlSessionFactory);
        }

        }

        return unwrapped;
        }

查看连接信息等

执行完 Object result = method.invoke(sqlSession, args); 才能获取到 connection的值

debugger查看这个对象的属性 可以看出连接信息等

sqlSession.executor.transaction.connection.poolEntry.connection

MybatisSimpleExecutor#doQuery

查看sql语句
如果用的是mybatis-plus则在下面的方法看到sql

com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor#doQuery

普通的则是在SimpleExecutor#doQuery 方法下

boundSql.sql

显示sql内容

执行完method.invoke(sqlSession, args) 后 watch 变量sqlSession.executor.localCache.cache 他的key就是sql

sqlSession.executor.localCache.cache

查看连接信息等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ofm5Oohw-1634026601934)(https://i.loli.net/2021/10/12/VfF2LHG4MNbCaOQ.png)]
在这里插入图片描述

执行完 Object result = method.invoke(sqlSession, args); 才能获取到 connection的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SfnJZs5y-1634026601936)(https://i.loli.net/2021/10/12/whRtd8iWsVzqYv3.jpg)]
在这里插入图片描述

查看sql语句

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7syC8NG-1634026601939)(https://i.loli.net/2021/10/12/D9Einw23fKbz65a.png)]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis,可以通过启用日志记录来查看具体执行的SQL语句。 在`mybatis-config.xml`文件,可以配置日志记录器,例如: ```xml <configuration> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <typeAliases> ... </typeAliases> <mappers> ... </mappers> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/> </layout> </appender> <logger name="org.mybatis"> <level value="TRACE"/> </logger> <root> <priority value="DEBUG"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration> </configuration> ``` 在这个配置,我们使用的是Log4j日志记录器,并将日志级别设置为TRACE。这将为MyBatis提供详细的SQL语句和参数信息。 如果你使用的是其他类型的日志记录器,你需要相应地调整配置文件。 完成配置后,你可以在应用程序的日志文件查看MyBatis执行的SQL语句。如果你使用的是Log4j,你可以在控制台或日志文件看到类似以下的输出: ```sh 18:05:39.843 [main] DEBUG org.mybatis.example.BlogMapper.selectBlog - ==> Preparing: select * from blog where id = ? 18:05:39.891 [main] DEBUG org.mybatis.example.BlogMapper.selectBlog - ==> Parameters: 1(Integer) 18:05:39.932 [main] DEBUG org.mybatis.example.BlogMapper.selectBlog - <== Total: 1 ``` 这些日志信息将告诉你执行的SQL语句和绑定的参数,以及查询结果的总数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值