首頁 > 軟體

MyBatis Log 外掛無法顯示SQL語句的原因解析

2020-09-23 12:00:50

Mybatis有什麼用

前兩天跟阿里的大牛聊天,他講到對於效能要求高,需求變化多的網際網路專案來說,用在sql優化上的開發時間是大頭,有時候程式碼寫出來一小時,優化反反覆覆可能要幾個星期,這時候Mybatis這種設定比較靈活的框架優勢就顯現了!Mybatis為什麼在國內這麼流行?

1. 什麼是Mybatis?

MyBatis是支援客製化化sql、儲存過程以及高階對映的優秀的持久層框架。MyBatis避免了幾乎所有的JDBC程式碼和手工設定引數以及抽取結果集。MyBatis使用簡單的XML或註解來設定和對映基本體,將介面和Java對映成資料庫中的記錄。

2. Mybatis為什麼有優勢?

l 簡單易學:本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar檔案+設定幾個sql對映檔案易於學習,易於使用,與JDBC相比,減少了50%以上的程式碼量。

l 靈活:Mybatis 不會對應用程式或者資料庫的現有設計強加任何影響,SQL寫在XML裡,從程式程式碼中徹底分離,降低耦合度,便於統一管理和優化,可重用。

l 解除sql與程式程式碼的耦合:通過提供DAO層,將業務邏輯和資料存取邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和程式碼的分離,提高了可維護性。

l 提供對映標籤,支援物件與資料庫的ORM欄位關係對映

l 提供物件關係對映標籤,支援物件關係組建維護

l 提供XML標籤,支援編寫動態sql。

3. Mybatis為什麼在國內這麼流行?

1、歷史悠久

MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案改名為MyBatis 。

2、阿里推動

其實十年前我們主要使用的ORM框架就是iBatis,而阿里巴巴是對國內Java開發者影響最大的一家公司。阿里在國內Java社群的影響力有目共睹,阿里對Java社群貢獻了很多實用的開源工具,並且國內Java開發者對於阿里開源的產品接納程度也最高。

早期阿里系離職工程師的影響力也不可小覷,這些從阿里離職的工程師進入了各個規模的公司, 通常也有擔任較高的職位, 擁有著相對較多的話語權, 在新公司繼續使用自己熟悉的iBatis就是再正常不過的了。

3、網際網路大環境下的選擇

MyBatis封裝較少,提供的切入點較多,適合進行架構。遇到超級複雜的場景的時候有不錯的sql支援。簡單高效,優化起來也方便,比較符合現在的開發節奏,網際網路公司都是先快速開發佔領市場,然後再優化程式碼。而且這個過程需求經常是變來變去的,開發人員也有流動性,為了便於管理,所以大家都選擇了Mybatis。

好了,開始咱今天的正文

MyBatis Log是IDEA一款下載量非常高的外掛,該外掛可以對控制檯列印的紀錄檔進行解析,然後將對應的SQL語句整理並拼接好對應的引數,非常方便。有時外掛卻無法列印SQL,總的來說,有如下三種原因:

mybatis安裝地址

https://plugins.jetbrains.com/plugin/10065-mybatis-log-plugin/versions

1. 專案的紀錄檔等級過高,修改紀錄檔等級為 DEBUG 或 INFO

## log4j.properties 檔案
log4j.rootLogger = DEBUG,stdout,D
 
或者
 
## application-dev.yml 檔案
loggig:
  level:
    root: DEBUG

2. mybatis設定中沒有設定將sql紀錄檔輸出到控制檯

## mybatis-config.xml 檔案
<configuration>
  <settings>
    <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />
  </settings>
</configuration>
 
或者
 
## application-dev.yml 檔案
mybatis-plus:
 configuration:
   ## 紀錄檔
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3. 控制檯列印的紀錄檔格式不符合規範,外掛無法解析

修改紀錄檔列印的格式即可,推薦格式如下:
## log4j.properties 檔案
###控制檯紀錄檔輸出###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%p] - [%t] - [%d{yyyy-MM-dd HH:mm:ss:SSS}] - (%c{1}:%L) - %m%n
 
或者
 
## application.yml 檔案
# 紀錄檔設定設定
logging:
 pattern:
  console: '%X{RequestNo}-%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}[%L] - %msg%n'

總結

到此這篇關於MyBatis Log 外掛無法顯示SQL語句的原因的文章就介紹到這了,更多相關MyBatis Log 外掛無法顯示SQL語句內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com