MybatisPlus打印SQL詳解

一、MybatisPlus打印SQL日誌

在使用MybatisPlus時,有時需要查看生成的SQL語句以及執行結果。MybatisPlus提供了打印SQL日誌的功能,可以幫助我們更好的調試SQL語句。

要啟用SQL日誌,我們需要在mybatis-plus的全局配置文件中設置logging.enableSqlLog為true。


mybatis-plus:
  configuration:
    # 打印SQL日誌
    logging:
      enableSqlLog: true

啟用後,MybatisPlus就會在控制台輸出所有生成的SQL語句,便於我們查看。

二、MybatisPlus打印SQL語句的原理

MybatisPlus的打印SQL日誌功能,是通過org.apache.ibatis.logging.Log接口實現的。它會在MybatisPlus的全局配置文件中,設置為使用Log4j2輸出SQL日誌。


# 配置Log4j2
logging:
  level:
    com.baomidou.mybatisplus.core.MybatisPlus: info
  appenders:
    console:
      type: console
      name: console
      target: SYSTEM_OUT
      layout:
        type: pattern
        pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"
  loggers:
    com.baomidou.mybatisplus.core.MybatisPlus:
      level: info
      additivity: false
      AppenderRef:
        - ref: console

在Log4j2配置中,我們設置了輸出MybatisPlus的日誌級別為info,即大於等於info級別的日誌都會輸出。同時,我們在控制台輸出日誌信息,設置輸出格式為時間、日誌級別、日誌名稱、日誌內容。

三、MybatisPlus打印SQL執行時間

在使用MybatisPlus執行SQL語句時,有時需要查看SQL的執行時間,以便對性能進行優化。MybatisPlus提供了打印SQL執行時間的功能。

啟用SQL執行時間功能,我們可以在MybatisPlus的全局配置文件中設置performance.maxTime屬性,單位為毫秒。當SQL執行時間超過該值時,MybatisPlus會在控制台打印執行時間。


mybatis-plus:
  configuration:
    # 打印SQL執行時間
    performance:
      maxTime: 2000

在上述配置中,我們設置SQL最大執行時間為2000毫秒,也就是2秒,如果執行時間超過2秒,MybatisPlus就會在控制台輸出執行時間。

四、MybatisPlus打印SQL語句到文件

有些情況下,我們需要將生成的SQL語句記錄到文件中,供後續查看和分析。MybatisPlus提供了將SQL語句打印到文件的功能。

啟用打印SQL到文件功能,我們需要在Log4j2配置中添加FileAppender配置。


# 配置Log4j2
logging:
  level:
    com.baomidou.mybatisplus.core.MybatisPlus: info
  appenders:
    console:
      type: console
      name: console
      target: SYSTEM_OUT
      layout:
        type: pattern
        pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"
    file:
      type: file
      name: sql_log
      fileName: ${sys:user.dir}/sql.log
      layout:
        type: pattern
        pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"
  loggers:
    com.baomidou.mybatisplus.core.MybatisPlus:
      level: info
      additivity: false
      AppenderRef:
        - ref: console
        - ref: sql_log

在上述配置中,我們添加了一個FileAppender配置,將SQL語句記錄到${sys:user.dir}/sql.log文件中,並設置日誌輸出格式為時間、日誌級別、日誌名稱、日誌內容。

五、Mybatis打印SQL語句

除了MybatisPlus,Mybatis本身也支持打印SQL語句。我們可以通過在mybatis配置文件中設置logImpl屬性為STDOUT_LOGGING或LOG4J2_LOGGING來啟用。


# 配置Mybatis日誌
mybatis:
  # 打印SQL語句
  configuration:
    logImpl: org.apache.ibatis.logging.stdout.StdOutImpl

在上述配置中,我們將logImpl屬性設置為STDOUT_LOGGING,即輸出到控制台。我們也可以設置為LOG4J2_LOGGING,即輸出到Log4j2配置文件中。

六、Mybatis打印的total

在進行分頁或者批量操作時,我們可能需要知道總記錄數,以便進行分頁計算或者判斷操作是否成功。Mybatis的PageInterceptor提供了total的輸出功能。

啟用total輸出功能,我們需要在mybatis配置文件中添加PageInterceptor配置,並設置其屬性defaultCount為true。


# 配置Mybatis分頁
mybatis:
  # 打印總記錄數
  configuration:
    plugins:
      - interceptor:
          class: com.github.pagehelper.PageInterceptor
          properties:
            defaultCount: true

在上述配置中,我們配置了PageInterceptor插件,並設置其屬性defaultCount為true。這樣,在進行分頁查詢時,Mybatis就會輸出查詢結果的總記錄數。

七、MybatisPlus註解

除了使用MybatisPlus的XML文件進行映射配置,我們還可以使用註解來進行映射配置。

例如,我們可以使用MybatisPlus提供的註解@Table進行表名的映射:


@Data
@Table(name = "user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
}

在上述代碼中,@Table註解指定了該類對應的表名為”user”。@TableId註解用於指定主鍵ID,並設置ID生成策略為自動遞增。

八、MybatisPlus查詢

MybatisPlus提供了一系列方便的查詢方法,如eq(等於)、ne(不等於)、lt(小於)、le(小於等於)、gt(大於)、ge(大於等於)、like(模糊查詢)等。

例如,我們可以使用eq方法進行等於查詢:


QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "張三");
List<User> userList = userMapper.selectList(wrapper);

在上述代碼中,我們使用eq方法將查詢條件設置為”name”字段等於”張三”。然後使用QueryWrapper封裝查詢條件,並傳入userMapper的selectList方法進行查詢。

九、MybatisPlus文件註解

MybatisPlus還提供了一系列文件註解,用於簡化開發。

例如,我們可以使用@TableName和@TableField註解等來進行表名和字段的映射:


@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    @TableField("name")
    private String username;
    private Integer age;
}

在上述代碼中,@TableName註解指定了該類對應的表名為”user”。@TableField註解用於指定類中的屬性與表中的列名之間的映射。我們將類中的”name”屬性映射到了”user”表的”name”列。

十、MybatisPlus文檔

如果你對MybatisPlus還不太熟悉,可以參考官方文檔,官方文檔中包含了MybatisPlus的詳細使用說明以及示例代碼。

MybatisPlus官方文檔地址:https://mybatis.plus/guide/

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/270470.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:37
下一篇 2024-12-16 13:37

相關推薦

  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • 使用SQL實現select 聚合查詢結果前加序號

    select語句是數據庫中最基礎的命令之一,用於從一個或多個表中檢索數據。常見的聚合函數有:count、sum、avg等。有時候我們需要在查詢結果的前面加上序號,可以使用以下兩種方…

    編程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一種非常流行的ORM框架,提供了SQL映射配置文件,可以使用類似於傳統SQL語言的方式編寫SQL語句。其中,SQL的Limit語法是一個非常重要的知識點,能夠實現分…

    編程 2025-04-29
  • SQL預研

    SQL預研是指在進行SQL相關操作前,通過數據分析和理解,確定操作的方法和步驟,從而避免不必要的錯誤和問題。以下從多個角度進行詳細闡述。 一、數據分析 數據分析是SQL預研的第一步…

    編程 2025-04-28
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25

發表回復

登錄後才能評論