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

配置 mybatis 打印出執(zhí)行的 sql 及返回的結(jié)果集

這篇具有很好參考價(jià)值的文章主要介紹了配置 mybatis 打印出執(zhí)行的 sql 及返回的結(jié)果集。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在開(kāi)發(fā)過(guò)程中, 經(jīng)常會(huì)遇到想要看到應(yīng)用所執(zhí)行的 sql 這樣的需求.

比如你寫(xiě)了一個(gè)查詢(xún)的功能, 但查詢(xún)出來(lái)的結(jié)果與你預(yù)期的不符合, 你想搞清楚到底哪里出了問(wèn)題, 你自然需要看看所執(zhí)行的 sql 語(yǔ)句, 必要的話(huà)甚至還要親自拷貝到數(shù)據(jù)庫(kù)里去查查.

自然, 這就要求應(yīng)用要能把執(zhí)行的 sql 輸出出來(lái). 以常用的 mybatis 框架為例, 來(lái)看一個(gè)最終的效果:

14:48 ==>  Preparing: select * from user where id = ? 
14:48 ==> Parameters: 1(Integer)
14:48 <==      Total: 1

另注: 這里的日志布局我啟用了一種極簡(jiǎn)的風(fēng)格, 只有"分鐘:秒數(shù)", 具體見(jiàn) 配置簡(jiǎn)化開(kāi)發(fā)階段日志輸出布局 的介紹.

那么, 在 mybatis 里, 這個(gè)要怎么做到呢?

配置 sql 輸出

具體來(lái)說(shuō), 是要增加一個(gè)日志級(jí)別的配置, 將 dao(或 mapper) 包級(jí)別調(diào)整到 DEBUG.

示例:

# log sql statement
logging.level.net.xiaogd.sample.mybatis.dao=DEBUG

注: 上述配置建議放在你的本地開(kāi)發(fā)環(huán)境配置文件中, 通常為 application-dev.properties, 關(guān)于 spring-boot 的 分環(huán)境配置profile 機(jī)制, 如不熟悉請(qǐng)自行查閱網(wǎng)絡(luò)了解.

對(duì)應(yīng)工程代碼包結(jié)構(gòu)如下:

mybatis配置打印查詢(xún)結(jié)果,日志,開(kāi)發(fā)技巧,mybatis,sql,數(shù)據(jù)庫(kù),日志

注: 我的代碼結(jié)構(gòu)下, mybatis 相關(guān)的類(lèi)放到了 dao 這個(gè)包下, 你的如果不是這樣, 可以根據(jù)自己的情況加以調(diào)整.

在上述配置下, 執(zhí)行以下測(cè)試:

package net.xiaogd.sample.mybatis.dao.user;

import lombok.extern.slf4j.Slf4j;
import net.xiaogd.sample.mybatis.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@Slf4j
@RunWith(SpringRunner.class)
@MybatisTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class SimpleTest {

	@Autowired
	private UserDao userDao;

    @Test
    public void testGetUserById() {
        User user = userDao.findUserById(1);
        log.info("user find id: {}", user.getId());
    }
}

相應(yīng)的 dao 接口:

package net.xiaogd.sample.mybatis.dao.user;

import net.xiaogd.sample.mybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserDao {

	@Select("select * from user where id = #{id}")
	User findUserById(int id);
}

相應(yīng)的 sql 語(yǔ)句, 參數(shù)值及查詢(xún)的總數(shù)都會(huì)打印出來(lái):

14:48 ==>  Preparing: select * from user where id = ? 
14:48 ==> Parameters: 1(Integer)
14:48 <==      Total: 1

輸出結(jié)果集

如果想進(jìn)一步輸出結(jié)果集, 則可以進(jìn)一步把日志級(jí)別提升到 TRACE. 如下:

# log sql statement and result set
logging.level.net.xiaogd.sample.mybatis.dao=TRACE

警告: 可能導(dǎo)致大量的日志輸出, 非必要情況下不要啟用, 且僅可以在本地開(kāi)發(fā)環(huán)境調(diào)試情況下啟用!

對(duì)于下述的數(shù)據(jù)表:

mybatis配置打印查詢(xún)結(jié)果,日志,開(kāi)發(fā)技巧,mybatis,sql,數(shù)據(jù)庫(kù),日志

最終的輸出如下:

17:36 ==>  Preparing: select * from user 
17:36 ==> Parameters: 
17:36 <==    Columns: id, username, password, nick_name
17:36 <==        Row: 1, admin, 123456, 管理員
17:36 <==        Row: 2, root, root, 根用戶(hù)
17:36 <==      Total: 2

可以看到字段及每行的值都被打印出來(lái)了.

遺留問(wèn)題

當(dāng)然了, 上述在輸出 sql 語(yǔ)句時(shí)還有一個(gè)問(wèn)題, 就是在有參數(shù)的情況下, 這個(gè)還不是最終的 sql, 而是類(lèi)似于 jdbc 中的那種 prepare statement:

select * from user where id = ? 

可以看到參數(shù)的值是用一個(gè)問(wèn)號(hào)占位符代替的, 真正的參數(shù)值輸出到了另一行.

如果要真的拷貝到數(shù)據(jù)庫(kù)查看工具里執(zhí)行, 比如 navicat 或者 mysql workbench 抑或是最簡(jiǎn)單的 mysql console 中, 我們還是得自行替換及拼湊最終的 sql.

雖然多數(shù)情況下這也不是特別麻煩, 但在特別多參數(shù)的情況下, 如果你發(fā)現(xiàn)執(zhí)行結(jié)果不對(duì), 用眼睛看輸出的參數(shù)值似乎也沒(méi)有問(wèn)題, 自行去拼湊就有點(diǎn)麻煩了, 能否直接輸出最終的 sql 呢? 也是有方式的, 我們將在下一篇再介紹這種方式.

參考文檔

更多打印 sql 日志相關(guān)的配置, 請(qǐng)參考其官網(wǎng): https://mybatis.org/mybatis-3/logging.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723081.html

到了這里,關(guān)于配置 mybatis 打印出執(zhí)行的 sql 及返回的結(jié)果集的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • SpringBoot打印系統(tǒng)執(zhí)行的sql語(yǔ)句以及日志的配置

    SpringBoot打印系統(tǒng)執(zhí)行的sql語(yǔ)句以及日志的配置

    直接在application.yml/properties文件中進(jìn)行配置 引入依賴(lài): Mybatis內(nèi)置的日志工廠(chǎng)提供日志功能,具體的日志實(shí)現(xiàn)有以下幾種工具: slf4j Apache Commons Logging Log4j 2 Log4j JDK logging 具體選擇哪個(gè)日志實(shí)現(xiàn)工具由MyBatis的內(nèi)置日志工廠(chǎng)確定。它會(huì)使用最先找到的(按上文列舉的順序查找)

    2024年02月07日
    瀏覽(20)
  • mybatis plus 控制臺(tái)和日志文件中打印sql配置

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

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

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

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

    2024年02月04日
    瀏覽(22)
  • mybatis查詢(xún)多個(gè)結(jié)果返回map--@MapKey使用方法

    mybatis查詢(xún)多個(gè)結(jié)果返回map--@MapKey使用方法

    目錄 ? ? ? ? 介紹 ?源碼分析: 在使用mybatis的時(shí)候遇到一種情況,查詢(xún)結(jié)果集返回多個(gè),想用map接收,以前是用List對(duì)象接收,然后java代碼中轉(zhuǎn)換成map。其實(shí)mybatis是支持返回map的。下面就介紹使用方法。 測(cè)試代碼: 下面@MapKey中的id是BusinessPricePO中的一個(gè)屬性id,否則會(huì)報(bào)錯(cuò)

    2024年02月12日
    瀏覽(23)
  • 鴻蒙開(kāi)發(fā),使用http返回的響應(yīng)數(shù)據(jù)無(wú)法正常獲取 ,利用hilog打印日志一直結(jié)果是object或者代碼憑空消失,根本沒(méi)有打印日志(靈異事件???)

    鴻蒙開(kāi)發(fā),使用http返回的響應(yīng)數(shù)據(jù)無(wú)法正常獲取 ,利用hilog打印日志一直結(jié)果是object或者代碼憑空消失,根本沒(méi)有打印日志(靈異事件???)

    這里簡(jiǎn)述項(xiàng)目相關(guān)背景:前后端分離項(xiàng)目,使用鴻蒙做前端,后端SpringBoot寫(xiě)好接口(通過(guò)商品分類(lèi)id查詢(xún)商品列表),鴻蒙前端頁(yè)面使用Tabs組件導(dǎo)航,展示商品分類(lèi),點(diǎn)擊分類(lèi)標(biāo)簽,查詢(xún)后端接口,返回對(duì)應(yīng)分類(lèi)商品列表數(shù)據(jù) 項(xiàng)目場(chǎng)景:鴻蒙開(kāi)發(fā),使用http返回的響應(yīng)數(shù)據(jù)無(wú)

    2024年04月27日
    瀏覽(15)
  • mybatis打印sql日志

    我們?nèi)粘2僮鲾?shù)據(jù)庫(kù)的過(guò)程一般都是使用mybatis中執(zhí)行sql操作,有時(shí)候?yàn)榱舜_認(rèn)mybatis拼接的sql是否正確,就需要在日志中打印出具體的sql語(yǔ)句,對(duì)應(yīng)的入?yún)⒁约皵?shù)據(jù)庫(kù)的返回值 一.sql日志輸出到控制臺(tái),修改mybatis-config文件,指定如下配置: 二.sql日志輸出到文件,修改mybatis

    2024年02月15日
    瀏覽(20)
  • Mybatis設(shè)置sql打印日志

    第一種:使用 mybatis 自帶的打印 第二種:使用 log4j 日志打印 備注:log4j 運(yùn)行級(jí)別調(diào)到DEBUG,可以在控制臺(tái)打印出mybatis運(yùn)行的sql語(yǔ)句。 #將等級(jí)為DEBUG的日悲信慮出到console和file這網(wǎng)個(gè)日的地,console和file的定義在下面的代碼 log4j.rootLogger=DEBUG,console,file #控制臺(tái)輸出的相關(guān)設(shè)置

    2024年02月06日
    瀏覽(17)
  • MyBatis動(dòng)態(tài)SQL、模糊查詢(xún)與結(jié)果映射

    MyBatis動(dòng)態(tài)SQL、模糊查詢(xún)與結(jié)果映射

    目錄 前言 一、MyBatis動(dòng)態(tài)SQL 1.動(dòng)態(tài)SQL是什么 2.動(dòng)態(tài)SQL的作用 3.常用動(dòng)態(tài)SQL元素 1. where + if 元素 2. set + if 元素 3. choose + when + otherwise 元素 4. 自定義 trim 元素 ?1. 自定義 trim 元素改寫(xiě)上面的 where + if 語(yǔ)句 2. 自定義 trim 元素改寫(xiě)上面的 set + if 語(yǔ)句 5. foreach 元素 6.SQL片段重用 二、

    2024年02月11日
    瀏覽(45)
  • Mybatis-Plus 打印sql日志

    先說(shuō)一下springboot 和mybatis-plus版本 再給一份logback.xml文件配置 配置打印日志的兩種方式 控制臺(tái)打印,很簡(jiǎn)單,在application.yml配置 日志文件打印,在application.yml配置 還需要再logback.xml中將mapper 包的logger日志級(jí)別設(shè)置為debug,看上方 有用的話(huà),幫忙點(diǎn)贊,謝謝,如果因?yàn)榘姹締?wèn)

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

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

    2023年04月13日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包