国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MyBatis實(shí)戰(zhàn):如何將拼接的SQL打印到日志

這篇具有很好參考價(jià)值的文章主要介紹了MyBatis實(shí)戰(zhàn):如何將拼接的SQL打印到日志。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

哈嘍,大家好,我是木頭左!

一、前言

在日常開發(fā)中,經(jīng)常會遇到拼接SQL的情況,這時(shí)候,如何將拼接的SQL打印到日志,以便追蹤和調(diào)試呢?本文將詳細(xì)介紹MyBatis如何實(shí)現(xiàn)這一功能。

二、MyBatis簡介

MyBatis是一個(gè)優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集的過程。MyBatis可以使用簡單的XML或注解來配置和映射原生信息,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。

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

1. 開啟MyBatis日志功能

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

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

這里使用了STD_OUT_LOGGING日志實(shí)現(xiàn),它會將日志輸出到控制臺。你也可以選擇其他日志實(shí)現(xiàn),如SLF4JLOG4J等。

2. 配置日志級別

為了讓MyBatis將拼接的SQL打印到日志,需要設(shè)置日志級別為DEBUG。在MyBatis的配置文件(mybatis-config.xml)中添加以下配置:

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

3. 編寫自定義攔截器

為了實(shí)現(xiàn)將拼接的SQL打印到日志,需要編寫一個(gè)自定義攔截器。創(chuàng)建一個(gè)類,繼承Interceptor接口,并實(shí)現(xiàn)其中的方法:文章來源地址http://www.zghlxwxcb.cn/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; // 攔截器執(zhí)行閾值,單位毫秒
    private long startTime; // 攔截器開始時(shí)間戳
    private int count; // 已處理的語句數(shù)量
    private boolean isForceIndexJoinOnNullFields; // 是否強(qiáng)制使用索引連接空字段字段類型為null的字段,默認(rèn)為false,當(dāng)值為true時(shí),MyBatis會強(qiáng)制使用索引連接這些字段以優(yōu)化查詢性能。注意:該選項(xiàng)僅適用于MySQL數(shù)據(jù)庫。對于其他數(shù)據(jù)庫可能需要不同的處理方式。請根據(jù)實(shí)際情況進(jìn)行調(diào)整。
> 我是木頭左,感謝各位童鞋的點(diǎn)贊、收藏,我們下期更精彩!
    

到了這里,關(guān)于MyBatis實(shí)戰(zhàn):如何將拼接的SQL打印到日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

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

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

    日志(Log)是每個(gè)程序都不可或缺的一部分,它可以幫助開發(fā)人員診斷和調(diào)試問題。Mybatis,作為一款備受贊譽(yù)的ORM框架,自然也提供了強(qiáng)大的日志功能。 它不僅提供了 內(nèi)置的標(biāo)準(zhǔn)實(shí)現(xiàn) ,還支持 集成各種主流的日志框架 ,讓我們可以輕松地 查看最終執(zhí)行的SQL語句 ,這在進(jìn)行數(shù)

    2024年02月05日
    瀏覽(22)
  • springboot+mybatis 配置 logback 日志 并打印sql

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 springboot + logback 日志 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 ` 使用時(shí)注意: 配置日志文件保存路徑 默認(rèn)用戶目錄 自定義指定需要打印日志的文件路徑 參考連接: 很詳細(xì) 是干貨 SpringBoo

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

    在springboot中使用logbac-spring.xml單獨(dú)打印mybaits中的sql,另存一個(gè)單獨(dú)的日志中。 幾個(gè)關(guān)鍵點(diǎn) a. 文件名需要為??logback-spring.xml??; 動態(tài)日志路徑才會生效; 屬性文件中配置 ??log.path=xxx??; 【Log日志】logback.xml動態(tài)配置屬性值(包括接入的第三方配置) b. levle 需要是DEBUG等級

    2023年04月13日
    瀏覽(26)
  • mybatis plus 控制臺和日志文件中打印sql配置

    配置mybatis-plus的日志實(shí)現(xiàn)類為StdOutImpl,該實(shí)現(xiàn)類中打印日志是通過 System.out.println(s) 的方式來打印日志的 日志文件中輸入sql需要配置mybatis-plus的日志類為項(xiàng)目中的日志框架實(shí)現(xiàn)類,還需要配置mapper接口所在包的日志打印級別為 DEBUG或者TRACE,mybatis提供了log4j、slf4g等實(shí)現(xiàn) 經(jīng)測

    2024年02月11日
    瀏覽(108)
  • springboot+mysql+mybatis如何實(shí)現(xiàn)控制臺打印sql

    在Spring Boot中使用MyBatis與MySQL,并希望在控制臺打印SQL語句,你可以通過配置MyBatis的日志級別來實(shí)現(xiàn)。以下是具體步驟: 添加依賴: 確保你的項(xiàng)目中包含了MyBatis和MySQL的相關(guān)依賴。在 pom.xml 文件中添加如下依賴: 配置application.properties或application.yml: 在 application.properties 或

    2024年02月01日
    瀏覽(22)
  • Mybatis-Plus詳解(新建maven項(xiàng)目、查詢所有信息、打印SQL日志、實(shí)現(xiàn)CRUD(增刪改查)、分頁、條件查詢且分頁,前后端分離式開發(fā))

    Mybatis-Plus詳解(新建maven項(xiàng)目、查詢所有信息、打印SQL日志、實(shí)現(xiàn)CRUD(增刪改查)、分頁、條件查詢且分頁,前后端分離式開發(fā))

    MyBatis-Plus(opens new window) (簡稱MP) 是一個(gè)MyBatis(opens new window)的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。想查看官網(wǎng)相關(guān)內(nèi)容的化我這里提供了官網(wǎng)地址:https://baomidou.com/ 無侵入:只做增強(qiáng)不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般

    2024年02月04日
    瀏覽(22)
  • Springboot 封裝整活 Mybatis 動態(tài)查詢條件SQL自動組裝拼接

    Springboot 封裝整活 Mybatis 動態(tài)查詢條件SQL自動組裝拼接

    ps:最近在參與3100保衛(wèi)戰(zhàn),戰(zhàn)況很激烈,剛剛打完仗,來更新一下之前寫了一半的博客。 該篇針對日常寫查詢的時(shí)候,那些動態(tài)條件sql 做個(gè)簡單的封裝,自動生成(拋磚引玉,搞個(gè)小玩具,不喜勿噴)。 來看看我們平時(shí)寫那些查詢,基本上都要寫的一些動態(tài)sql: ? 一個(gè)字段

    2024年02月12日
    瀏覽(17)
  • Mybatis 開啟控制臺打印sql語句

    org.jeecg.modules.hdx.mapper為@mapper注解下面的類,或者繼承BaseMapper,或者@MapperScan掃描包的類 2-1:在pom文件引入依賴 3-1:pom配置(包含分頁)

    2024年02月13日
    瀏覽(96)
  • mybatis-plus控制臺打印sql(mybatis-Log)

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

    配置了mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl;但是mybatis執(zhí)行的sql沒有輸出 需要檢查點(diǎn): 1、日志級別設(shè)置:請確保你的日志級別配置正確。如果日志級別設(shè)置得太低,可能導(dǎo)致SQL語句不會被打印出來。你可以嘗試將日志級別調(diào)整為DEBUG或更高級別,以確

    2024年02月03日
    瀏覽(92)
  • Springboot 自定義 Mybatis攔截器,實(shí)現(xiàn) 動態(tài)查詢條件SQL自動組裝拼接(玩具)

    Springboot 自定義 Mybatis攔截器,實(shí)現(xiàn) 動態(tài)查詢條件SQL自動組裝拼接(玩具)

    ps:最近在參與3100保衛(wèi)戰(zhàn),戰(zhàn)況很激烈,剛剛打完仗,來更新一下之前寫了一半的博客。 該篇針對日常寫查詢的時(shí)候,那些動態(tài)條件sql 做個(gè)簡單的封裝,自動生成(拋磚引玉,搞個(gè)小玩具,不喜勿噴)。 來看看我們平時(shí)寫那些查詢,基本上都要寫的一些動態(tài)sql: ? 一個(gè)字段

    2024年02月12日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包