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

java中實(shí)現(xiàn)控制臺(tái)打印sql語(yǔ)句方式

 更新時(shí)間:2023年06月20日 08:35:35   作者:虛無V旋渦  
這篇文章主要介紹了java中實(shí)現(xiàn)控制臺(tái)打印sql語(yǔ)句方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java控制臺(tái)打印sql語(yǔ)句

spring boot項(xiàng)目打印sql語(yǔ)句 

首先我們看一下效果

現(xiàn)在直接上代碼:

logback-spring.xml 文件

<configuration>      
    <!-- %m輸出的信息,%p日志級(jí)別,%t線程名,%d日期,%c類的全名,%i索引【從數(shù)字0開始遞增】,,, -->      
    <!-- appender是configuration的子節(jié)點(diǎn),是負(fù)責(zé)寫日志的組件。 -->  
    <!-- ConsoleAppender:把日志輸出到控制臺(tái) -->  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">      
        <encoder>      
            <pattern>%d %p (%file:%line\)- %m%n</pattern>
            <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level (%logger{50}:%line\) - %msg%n</pattern> -->    
            <!-- 控制臺(tái)也要使用UTF-8,不要使用GBK,否則會(huì)中文亂碼 -->  
            <charset>UTF-8</charset>     
        </encoder>      
    </appender>      
    <!-- RollingFileAppender:滾動(dòng)記錄文件,先將日志記錄到指定文件,當(dāng)符合某個(gè)條件時(shí),將日志記錄到其他文件 -->  
    <!-- 以下的大概意思是:1.先按日期存日志,日期變了,將前一天的日志文件名重命名為XXX%日期%索引,新的日志仍然是sys.log -->  
    <!--             2.如果日期沒有發(fā)生變化,但是當(dāng)前日志的文件大小超過1KB時(shí),對(duì)當(dāng)前日志進(jìn)行分割 重命名-->  
    <appender name="commonlog"      
        class="ch.qos.logback.core.rolling.RollingFileAppender">      
        <File>E:/log/apply/commonlog.log</File>      
        <!-- rollingPolicy:當(dāng)發(fā)生滾動(dòng)時(shí),決定 RollingFileAppender 的行為,涉及文件移動(dòng)和重命名。 -->  
        <!-- TimeBasedRollingPolicy: 最常用的滾動(dòng)策略,它根據(jù)時(shí)間來制定滾動(dòng)策略,既負(fù)責(zé)滾動(dòng)也負(fù)責(zé)出發(fā)滾動(dòng) -->  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      
            <!-- 活動(dòng)文件的名字會(huì)根據(jù)fileNamePattern的值,每隔一段時(shí)間改變一次 -->  
            <!-- 文件名:log/sys.2017-12-05.0.log -->  
            <fileNamePattern>E:/log/apply/commonlog.%d.%i.log</fileNamePattern>
            <!-- 每產(chǎn)生一個(gè)日志文件,該日志文件的保存期限為30天 -->   
            <maxHistory>30</maxHistory>     
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">      
                <!-- maxFileSize:這是活動(dòng)文件的大小,默認(rèn)值是10MB,本篇設(shè)置為1KB,只是為了演示 -->    
                <maxFileSize>5KB</maxFileSize>      
            </timeBasedFileNamingAndTriggeringPolicy>      
        </rollingPolicy>      
        <encoder>      
            <!-- pattern節(jié)點(diǎn),用來設(shè)置日志的輸入格式 -->  
            <pattern>%d %p (%file:%line\)- %m%n</pattern>      
            <!-- 記錄日志的編碼 -->  
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->     
        </encoder>      
    </appender>
    <!-- RollingFileAppender:滾動(dòng)記錄文件,先將日志記錄到指定文件,當(dāng)符合某個(gè)條件時(shí),將日志記錄到其他文件 -->  
    <!-- 以下的大概意思是:1.先按日期存日志,日期變了,將前一天的日志文件名重命名為XXX%日期%索引,新的日志仍然是sys.log -->  
    <!--             2.如果日期沒有發(fā)生變化,但是當(dāng)前日志的文件大小超過1KB時(shí),對(duì)當(dāng)前日志進(jìn)行分割 重命名-->
    <appender name="sqllog"      
        class="ch.qos.logback.core.rolling.RollingFileAppender">      
        <File>E:/log/apply/sqllog.log</File>      
        <!-- rollingPolicy:當(dāng)發(fā)生滾動(dòng)時(shí),決定 RollingFileAppender 的行為,涉及文件移動(dòng)和重命名。 -->  
        <!-- TimeBasedRollingPolicy: 最常用的滾動(dòng)策略,它根據(jù)時(shí)間來制定滾動(dòng)策略,既負(fù)責(zé)滾動(dòng)也負(fù)責(zé)出發(fā)滾動(dòng) -->  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      
            <!-- 活動(dòng)文件的名字會(huì)根據(jù)fileNamePattern的值,每隔一段時(shí)間改變一次 -->  
            <!-- 文件名:log/sys.2017-12-05.0.log -->  
            <fileNamePattern>E:/log/apply/sqllog.%d.%i.log</fileNamePattern>
            <!-- 每產(chǎn)生一個(gè)日志文件,該日志文件的保存期限為30天 -->   
            <maxHistory>30</maxHistory>     
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">      
                <!-- maxFileSize:這是活動(dòng)文件的大小,默認(rèn)值是10MB,本篇設(shè)置為1KB,只是為了演示 -->    
                <maxFileSize>5KB</maxFileSize>      
            </timeBasedFileNamingAndTriggeringPolicy>      
        </rollingPolicy>      
        <encoder>
            <!-- pattern節(jié)點(diǎn),用來設(shè)置日志的輸入格式 -->  
            <pattern>%d %p (%file:%line\)- %m%n</pattern>      
            <!-- 記錄日志的編碼 -->  
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->     
        </encoder>      
    </appender>
    <!-- 指定項(xiàng)目中某個(gè)包,當(dāng)有日志操作行為時(shí)的日志記錄級(jí)別 -->  
    <!-- com.appley為根包,也就是只要是發(fā)生在這個(gè)根包下面的所有日志操作行為的權(quán)限都是DEBUG -->  
    <!-- 級(jí)別依次為【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->  
    <logger name="cn.apply.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="sqllog" />
        <appender-ref ref="STDOUT" />
    </logger>
    <!-- 控制臺(tái)輸出日志級(jí)別 -->  
    <root level="info">      
        <appender-ref ref="STDOUT" />
        <appender-ref ref="commonlog" />       
    </root>      
</configuration>

application.properties 配置

#引入日志配置文件  
logging.config=classpath:logback-spring.xml

運(yùn)行項(xiàng)目,調(diào)用接口看效果!

jdbc打印最終SQL語(yǔ)句

JDBC 獲取要執(zhí)行的SQL語(yǔ)句,也就是說 包括 ? 號(hào)的值:

網(wǎng)上查查了很多,都沒能成功, 最后試了一下toString 可以了:

? ? public ResultSet executeQuery(Connection conn, String sql, Object... param)
? ? ? ? ? ? throws SQLException {
? ? ? ? String sql = "SELECT * FROM categorys LIMIT ?,?";
? ? ? ? PreparedStatement ptmt = conn.prepareStatement(sql);
? ? ? ? ptmt.setObject(1, 0);
? ? ? ? ptmt.setObject(1, 3);
? ? ? ? System.out.println(ptmt.toString());//此處打印了對(duì)象和 帶入?yún)?shù)后的sql語(yǔ)句
? ? ? ? return ptmt.executeQuery();
? ? }

打印效果如下:

com.mysql.jdbc.JDBC4PreparedStatement@14906b9: SELECT * FROM categorys LIMIT 0,3
com.mysql.jdbc.JDBC4PreparedStatement@158803f: SELECT COUNT(*) FROM categorys

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis3用log4j在控制臺(tái)輸出SQL的方法示例

    MyBatis3用log4j在控制臺(tái)輸出SQL的方法示例

    本篇文章主要介紹了MyBatis3用log4j在控制臺(tái)輸出SQL的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException的錯(cuò)誤問題

    IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException的錯(cuò)誤問題

    這篇文章主要介紹了IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException問題 ,本文內(nèi)容簡(jiǎn)短給大家介紹的好,需要的朋友可以參考下
    2020-05-05
  • Java如何使用JSR303校驗(yàn)數(shù)據(jù)與自定義校驗(yàn)注解

    Java如何使用JSR303校驗(yàn)數(shù)據(jù)與自定義校驗(yàn)注解

    這篇文章主要介紹了Java如何使用JSR303校驗(yàn)數(shù)據(jù)與自定義校驗(yàn)注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java Process.waitFor()方法詳解

    Java Process.waitFor()方法詳解

    這篇文章主要介紹了Java Process.waitFor()方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • WeakHashMap的垃圾回收原理詳解

    WeakHashMap的垃圾回收原理詳解

    這篇文章主要介紹了WeakHashMap的垃圾回收原理詳解,WeakHashMap 與 HashMap 的用法基本類似,與 HashMap 的區(qū)別在于,HashMap的key保留了對(duì)實(shí)際對(duì)象的強(qiáng)引用個(gè),這意味著只要該HashMap對(duì)象不被銷毀,該HashMap的所有key所引用的對(duì)象就不會(huì)被垃圾回收,需要的朋友可以參考下
    2023-09-09
  • java.sql.SQLRecoverableException關(guān)閉的連接異常問題及解決辦法

    java.sql.SQLRecoverableException關(guān)閉的連接異常問題及解決辦法

    當(dāng)數(shù)據(jù)庫(kù)連接池中的連接被創(chuàng)建而長(zhǎng)時(shí)間不使用的情況下,該連接會(huì)自動(dòng)回收并失效,就導(dǎo)致客戶端程序報(bào)“ java.sql.SQLException: Io 異常: Connection reset” 或“java.sql.SQLException 關(guān)閉的連接”異常問題,下面給大家分享解決方案,一起看看吧
    2024-03-03
  • Java 裝箱與拆箱詳解及實(shí)例代碼

    Java 裝箱與拆箱詳解及實(shí)例代碼

    這篇文章主要介紹了Java 裝箱與拆箱詳解及實(shí)例代碼的相關(guān)資料,這里對(duì)java 的裝箱及拆箱進(jìn)行了基本概念詳解及簡(jiǎn)單使用,需要的朋友可以參考下
    2017-01-01
  • spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及最新解決方案

    spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及最新解決方案

    使用聲明式事務(wù)@Transactional進(jìn)行事務(wù)一致性的管理,在開發(fā)過程中,發(fā)現(xiàn)很多開發(fā)同學(xué)都用錯(cuò)了spring聲明式事務(wù)@Transactional或使用不規(guī)范,導(dǎo)致出現(xiàn)各種事務(wù)問題,這篇文章主要介紹了spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及解決辦法,需要的朋友可以參考下
    2024-02-02
  • Spring5新功能日志框架Log4j2整合示例

    Spring5新功能日志框架Log4j2整合示例

    這篇文章主要為大家介紹了Spring5新功能之日志框架Log4j2的整合示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 使用IDEA如何打包發(fā)布SpringBoot并部署到云服務(wù)器

    使用IDEA如何打包發(fā)布SpringBoot并部署到云服務(wù)器

    這篇文章主要介紹了使用IDEA如何打包發(fā)布SpringBoot并部署到云服務(wù)器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

民勤县| 卢湾区| 金堂县| 保山市| 蕲春县| 文昌市| 凤城市| 开远市| 广昌县| 白河县| 洛浦县| 三台县| 阿拉善盟| 渭南市| 马关县| 溧水县| 平江县| 平潭县| 封开县| 潼关县| 苏尼特右旗| 望奎县| 桃源县| 沐川县| 酒泉市| 西乌| 长沙县| 海口市| 年辖:市辖区| 丘北县| 冕宁县| 纳雍县| 澎湖县| 抚州市| 邹平县| 鹤庆县| 兴和县| 宣化县| 酒泉市| 托克托县| 成安县|