MyBatis实战:如何将拼接的SQL打印到日志

这篇具有很好参考价值的文章主要介绍了MyBatis实战:如何将拼接的SQL打印到日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽,大家好,我是木头左!

一、前言

在日常开发中,经常会遇到拼接SQL的情况,这时候,如何将拼接的SQL打印到日志,以便追踪和调试呢?本文将详细介绍MyBatis如何实现这一功能。

二、MyBatis简介

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

三、MyBatis如何将拼接的SQL打印到日志?

1. 开启MyBatis日志功能

在MyBatis的配置文件(mybatis-config.xml)中,需要开启日志功能。具体配置如下:

<settings>
    <setting name="logImpl" value="STD_OUT_LOGGING"/>
</settings>

这里使用了STD_OUT_LOGGING日志实现,它会将日志输出到控制台。你也可以选择其他日志实现,如SLF4JLOG4J等。

2. 配置日志级别

为了让MyBatis将拼接的SQL打印到日志,需要设置日志级别为DEBUG。在MyBatis的配置文件(mybatis-config.xml)中添加以下配置:

<settings>
    <setting name="logImpl" value="STD_OUT_LOGGING"/>
    <setting name="logLevel" value="DEBUG"/>
</settings>

3. 编写自定义拦截器

为了实现将拼接的SQL打印到日志,需要编写一个自定义拦截器。创建一个类,继承Interceptor接口,并实现其中的方法:文章来源地址https://www.toymoban.com/news/detail-847651.html

import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.plugin.*;

import java.sql.Connection;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})
public class LogInterceptor implements Interceptor {
    private static final Pattern PATTERN = Pattern.compile("(?i)select\\s+(.*?)\\s+from");
    private static final String SELECT_STATEMENT = "select";
    private static final String FROM_STATEMENT = "from";
    private static final String WHERE_STATEMENT = "where";
    private static final String ORDER_BY_STATEMENT = "order by";
    private static final String GROUP_BY_STATEMENT = "group by";
    private static final String HAVING_STATEMENT = "having";
    private static final String LIMIT_STATEMENT = "limit";
    private static final String FORCE_INDEX_JOIN_ON_NULL_FIELDS = "force index join on null fields";
    private static final String DISTINCT = "distinct";
    private static final String SQL_TEMPLATE = "insert into %s (%s) values (%s)";
    private static final String SQL_PARAM = "%s";
    private static final String PARAMETER_NAME = "parameterName";
    private static final String COLUMN_NAME = "columnName";
    private static final String RESULT_SET_TYPE = "resultSetType";
    private static final int INTERCEPTOR_PREMATURE_EXECUTION_THRESHOLD = 1000; // 拦截器执行阈值,单位毫秒
    private long startTime; // 拦截器开始时间戳
    private int count; // 已处理的语句数量
    private boolean isForceIndexJoinOnNullFields; // 是否强制使用索引连接空字段字段类型为null的字段,默认为false,当值为true时,MyBatis会强制使用索引连接这些字段以优化查询性能。注意:该选项仅适用于MySQL数据库。对于其他数据库可能需要不同的处理方式。请根据实际情况进行调整。
> 我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!
    

到了这里,关于MyBatis实战:如何将拼接的SQL打印到日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

    【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

    日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了 内置的标准实现 ,还支持 集成各种主流的日志框架 ,让我们可以轻松地 查看最终执行的SQL语句 ,这在进行数

    2024年02月05日
    浏览(13)
  • springboot+mybatis 配置 logback 日志 并打印sql

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 springboot + logback 日志 提示:以下是本篇文章正文内容,下面案例可供参考 ` 使用时注意: 配置日志文件保存路径 默认用户目录 自定义指定需要打印日志的文件路径 参考连接: 很详细 是干货 SpringBoo

    2024年02月19日
    浏览(14)
  • 【LogBack日志】打印mybatis中sql日志并存放到指定文件中

    在springboot中使用logbac-spring.xml单独打印mybaits中的sql,另存一个单独的日志中。 几个关键点 a. 文件名需要为​​logback-spring.xml​​; 动态日志路径才会生效; 属性文件中配置 ​​log.path=xxx​​; 【Log日志】logback.xml动态配置属性值(包括接入的第三方配置) b. levle 需要是DEBUG等级

    2023年04月13日
    浏览(12)
  • mybatis plus 控制台和日志文件中打印sql配置

    配置mybatis-plus的日志实现类为StdOutImpl,该实现类中打印日志是通过 System.out.println(s) 的方式来打印日志的 日志文件中输入sql需要配置mybatis-plus的日志类为项目中的日志框架实现类,还需要配置mapper接口所在包的日志打印级别为 DEBUG或者TRACE,mybatis提供了log4j、slf4g等实现 经测

    2024年02月11日
    浏览(55)
  • springboot+mysql+mybatis如何实现控制台打印sql

    在Spring Boot中使用MyBatis与MySQL,并希望在控制台打印SQL语句,你可以通过配置MyBatis的日志级别来实现。以下是具体步骤: 添加依赖: 确保你的项目中包含了MyBatis和MySQL的相关依赖。在 pom.xml 文件中添加如下依赖: 配置application.properties或application.yml: 在 application.properties 或

    2024年02月01日
    浏览(11)
  • Mybatis-Plus详解(新建maven项目、查询所有信息、打印SQL日志、实现CRUD(增删改查)、分页、条件查询且分页,前后端分离式开发)

    Mybatis-Plus详解(新建maven项目、查询所有信息、打印SQL日志、实现CRUD(增删改查)、分页、条件查询且分页,前后端分离式开发)

    MyBatis-Plus(opens new window) (简称MP) 是一个MyBatis(opens new window)的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。想查看官网相关内容的化我这里提供了官网地址:https://baomidou.com/ 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般

    2024年02月04日
    浏览(13)
  • Springboot 封装整活 Mybatis 动态查询条件SQL自动组装拼接

    Springboot 封装整活 Mybatis 动态查询条件SQL自动组装拼接

    ps:最近在参与3100保卫战,战况很激烈,刚刚打完仗,来更新一下之前写了一半的博客。 该篇针对日常写查询的时候,那些动态条件sql 做个简单的封装,自动生成(抛砖引玉,搞个小玩具,不喜勿喷)。 来看看我们平时写那些查询,基本上都要写的一些动态sql:   一个字段

    2024年02月12日
    浏览(11)
  • Mybatis 开启控制台打印sql语句

    org.jeecg.modules.hdx.mapper为@mapper注解下面的类,或者继承BaseMapper,或者@MapperScan扫描包的类 2-1:在pom文件引入依赖 3-1:pom配置(包含分页)

    2024年02月13日
    浏览(48)
  • mybatis-plus控制台打印sql(mybatis-Log)

    mybatis-plus控制台打印sql(mybatis-Log)

    配置了mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl;但是mybatis执行的sql没有输出 需要检查点: 1、日志级别设置:请确保你的日志级别配置正确。如果日志级别设置得太低,可能导致SQL语句不会被打印出来。你可以尝试将日志级别调整为DEBUG或更高级别,以确

    2024年02月03日
    浏览(45)
  • Springboot 自定义 Mybatis拦截器,实现 动态查询条件SQL自动组装拼接(玩具)

    Springboot 自定义 Mybatis拦截器,实现 动态查询条件SQL自动组装拼接(玩具)

    ps:最近在参与3100保卫战,战况很激烈,刚刚打完仗,来更新一下之前写了一半的博客。 该篇针对日常写查询的时候,那些动态条件sql 做个简单的封装,自动生成(抛砖引玉,搞个小玩具,不喜勿喷)。 来看看我们平时写那些查询,基本上都要写的一些动态sql:   一个字段

    2024年02月12日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包