一、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