最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot單獨在指定地方輸出sql的方法

 更新時間:2023年10月12日 09:01:11   作者:枯楓葉  
一般線上項目都是將日志進(jìn)行關(guān)閉,因為mybatis日志打印,時間長了,會占用大量的內(nèi)存,如果我想在我指定的地方進(jìn)行打印sql情況,本文就給大家介紹了springboot單獨在指定地方輸出sql的方法,需要的朋友可以參考下

一般線上項目都是將日志進(jìn)行關(guān)閉,因為mybatis日志打印,時間長了,會占用大量的內(nèi)存,如果我想在我指定的地方進(jìn)行打印sql情況,怎么玩呢!

下面這個場景:

某天線上的項目出bug了,日志打印出來是更新成功的,但是數(shù)據(jù)庫的數(shù)據(jù)卻沒有更新,這時候我想給執(zhí)行這條sql打印出來,方便查看,但是一旦開啟mybatis的日志打印功能,就回去全局打印所有的日志,我只想在我想打印的地方打印sql,這時候怎么辦呢!見下面的列子:

我想在下面紅色箭頭處打印這句sql

這時候怎么做呢,咱們可以這樣,先將SqlSessionFactory對象注入進(jìn)來,

如下圖:

private final SqlSessionFactory sqlSessionFactory;
    @Autowired
    public LoginService(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }

然后在需要打印的地方加上下面的代碼即可:

// 獲取執(zhí)行的SQL語句并打印
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            Configuration sqlSessionConfiguration = sqlSession.getConfiguration();
            BoundSql boundSql = sqlSessionConfiguration
                    .getMappedStatement("com.green.testlocalhost.mapper.AdminUserMapper.selectOneByExample")
                    .getSqlSource()
                    .getBoundSql(userExample);
            String sql = StringUtils.getExecSql(sqlSessionConfiguration, boundSql);
            System.out.println("本次執(zhí)行的sql語句::" + sql);
        }

注意:com.green.testlocalhost.mapper.AdminUserMapper.selectOneByExample 這個是StatementId,也就是你主動調(diào)用db框架的那個類或者接口的包路徑(com.green.testlocalhost.mapper.AdminUserMapper),然后在路徑后面拼接調(diào)用的方法(selectOneByExample )即可

用到的工具方法如下:

/**
     * 獲取執(zhí)行的sql語句
     * @param configuration
     * @param boundSql
     * @return
     */
    public static String getExecSql(Configuration configuration, BoundSql boundSql) {
        try {
            Object parameterObject = boundSql.getParameterObject();
            List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
            String sql = boundSql.getSql().replaceAll("[\\s]+", " ");
            if (!parameterMappings.isEmpty() && parameterObject != null) {
                TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
                if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
                    sql = sql.replaceFirst("\\?", getParameterValue(parameterObject));
                } else {
                    MetaObject metaObject = configuration.newMetaObject(parameterObject);
                    for (ParameterMapping parameterMapping : parameterMappings) {
                        String propertyName = parameterMapping.getProperty();
                        Object obj;
                        if (metaObject.hasGetter(propertyName)) {
                            obj = metaObject.getValue(propertyName);
                            sql = sql.replaceFirst("\\?", getParameterValue(obj));
                        } else if (boundSql.hasAdditionalParameter(propertyName)) {
                            obj = boundSql.getAdditionalParameter(propertyName);
                            sql = sql.replaceFirst("\\?", getParameterValue(obj));
                        }
                    }
                }
            }
            return sql;
        } catch (Exception var11) {
            return "";
        }
    }
    private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private static String getParameterValue(Object obj) {
        String value;
        if (obj instanceof String) {
            value = "'" + obj + "'";
        } else if (obj instanceof Date) {
            value = "'" + SIMPLE_DATE_FORMAT.format(obj) + "'";
        } else if (obj != null) {
            value = obj.toString();
        } else {
            value = "";
        }
        return value;
    }

這樣就可以在你指定的代碼地方打印sql而不是全局打印sql了

以上就是springboot單獨在指定地方輸出sql的方法的詳細(xì)內(nèi)容,更多關(guān)于springboot輸出sql的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Druid基本配置及內(nèi)置監(jiān)控使用_動力節(jié)點Java學(xué)院整理

    Druid基本配置及內(nèi)置監(jiān)控使用_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Druid基本配置及內(nèi)置監(jiān)控使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 在Ubuntu上部署SpringBoot應(yīng)用的操作步驟

    在Ubuntu上部署SpringBoot應(yīng)用的操作步驟

    隨著云計算和容器化技術(shù)的普及,Linux 服務(wù)器已成為部署 Web 應(yīng)用程序的主流平臺之一,Java 作為一種跨平臺的編程語言,具有廣泛的應(yīng)用場景,本文將詳細(xì)介紹如何在 Ubuntu 服務(wù)器上部署 Java 應(yīng)用,需要的朋友可以參考下
    2025-01-01
  • maven關(guān)于pom文件中的relativePath標(biāo)簽使用

    maven關(guān)于pom文件中的relativePath標(biāo)簽使用

    在Maven項目中,子工程通過<relativePath>標(biāo)簽指定父工程的pom.xml位置,以確保正確繼承父工程的配置,這個標(biāo)簽可以配置為默認(rèn)值、空值或自定義值,默認(rèn)情況下,Maven會向上一級目錄尋找父pom;若配置為空值
    2024-09-09
  • maven將項目打包上傳到nexus私服的詳細(xì)教程

    maven將項目打包上傳到nexus私服的詳細(xì)教程

    這篇文章主要介紹了maven將項目打包上傳到nexus私服,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-07-07
  • Java SpringBoot將Word文檔轉(zhuǎn)為PDF的全流程解析

    Java SpringBoot將Word文檔轉(zhuǎn)為PDF的全流程解析

    在 Java 里,能把 Word 轉(zhuǎn) PDF 的工具還真不少,本文主要來和大家聊聊Java如何整合SpringBoot實現(xiàn)將Word文檔轉(zhuǎn)為PDF的全流程,有需要的可以了解下
    2025-05-05
  • Java實現(xiàn)PDF轉(zhuǎn)為Word文檔的示例代碼

    Java實現(xiàn)PDF轉(zhuǎn)為Word文檔的示例代碼

    眾所周知,PDF文檔除了具有較強(qiáng)穩(wěn)定性和兼容性外,?還具有較強(qiáng)的安全性,在工作中可以有效避免別人無意中對文檔內(nèi)容進(jìn)行修改。本文將分為以下兩部分介紹如何在保持布局的情況下將PDF轉(zhuǎn)為Word文檔,希望對大家有所幫助
    2023-01-01
  • Springboot 2.6集成redis maven報錯的坑記錄

    Springboot 2.6集成redis maven報錯的坑記錄

    這篇文章主要介紹了Springboot 2.6集成redis maven報錯的坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java中的繼承與接口解讀

    Java中的繼承與接口解讀

    這篇文章主要介紹了Java中的繼承與接口使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 基于序列化存取實現(xiàn)java對象深度克隆的方法詳解

    基于序列化存取實現(xiàn)java對象深度克隆的方法詳解

    本篇文章是對序列化存取實現(xiàn)java對象深度克隆的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • java判斷字符串是否為數(shù)字的方法小結(jié)

    java判斷字符串是否為數(shù)字的方法小結(jié)

    這篇文章主要介紹了java判斷字符串是否為數(shù)字的方法,分別講述了使用Java自帶函數(shù)、正則表達(dá)式及ascii碼三種方法進(jìn)行字符串判斷的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論

江西省| 疏附县| 遂溪县| 上犹县| 托里县| 松桃| 鱼台县| 都江堰市| 孝义市| 晋中市| 牡丹江市| 蕲春县| 来宾市| 大荔县| 仲巴县| 改则县| 淮阳县| 沁水县| 葫芦岛市| 义乌市| 哈尔滨市| 台前县| 宜春市| 新河县| 吴旗县| 九寨沟县| 福安市| 河北省| 钦州市| 宜兰县| 永胜县| 石景山区| 应用必备| 威远县| 台湾省| 防城港市| 本溪市| 卢氏县| 旺苍县| 保山市| 乳山市|