天天看點

學Java, 怎能不知 MybatisPlus?

作者:Candy.W

Part1:MybatisPlus是什麼

MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,在 MyBatis 的基礎上隻做增強不做改變,為簡化開發、提高效率而生。

Part2:MybatisPlus架構結構

(下圖來源于官網)

Part3:MybatisPlus可以做什麼

即使你沒有使用或學習過 Mybatis,也沒關系。這不會妨礙你對 MybatisPlus 的學習,使用過後你會感受到它的強大之處,它幫我們簡化了很多代碼的邏輯。

以下是我使用 MybatisPlus 過程中發現的一些強大特性。

1.自動填充功能

實作元對象處理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler,這樣我們就可以對指定字段進行填充入庫。

2.分頁插件

在配置類裡面用 Bean 來注入一個方法傳回 PaginationInterceptor這個類對象。這樣就可以非常容易的實作分頁功能。

3.樂觀鎖插件

在配置類裡面用 Bean 來注入一個方法傳回 OptimisticLockerInterceptor 這個類對象。這樣我們就可以解決丢失更新的問題。

4.邏輯删除插件

在配置類裡面用 Bean 來注入一個方法傳回 ISqlInjector 這個類對象。這樣我們就可以實作邏輯删除的邏輯。

5.執行性能分析插件

在配置類裡面用 Bean 來注入一個方法傳回 PerformanceInterceptor這個類對象。這樣我們可以通過設定參數:maxTime,sql 執行最大時長,超過自動停止運作,有助于發現問題。

6.複雜條件查詢

通過建立 QueryWrapper 類對象,可以去建構我們想要的不同查詢條件的組合,快速的實作各種複雜查詢條件的生成。

Part4:示例代碼

以下是代碼結構示意圖:

Step1: User表的字段資料及實體類定義的代碼字段及資料

實體類代碼

學Java, 怎能不知 MybatisPlus?

Step2: 配置類

@EnableTransactionManagement
@Configuration
@MapperScan("com.test.mpdemo0112.mapper")//在 Spring Boot 啟動類中添加 @MapperScan 注解,掃描 Mapper 檔案夾
public class MybatisPlusConfig {
    //樂觀鎖插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
    //分頁插件
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
    //邏輯删除插件
    @Bean
    public ISqlInjector iSqlInjector(){
        return new LogicSqlInjector();
    }
    //SQL 執行性能分析插件
    //(1)參數說明
    //參數:maxTime:SQL 執行最大時長,超過自動停止運作,有助于發現問題。
    //參數:format:SQL是否格式化,預設false
    @Bean
    @Profile({"test","dev"})
    public PerformanceInterceptor performanceInterceptor(){
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(500);//ms,超過此處設定的ms則sql不執行
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }
}           

Step3: 中繼資料對象處理類

學Java, 怎能不知 MybatisPlus?

Step4: UserMapper繼承BaseMapper後擷取的mp超能力

學Java, 怎能不知 MybatisPlus?

Step5: main入口代碼

學Java, 怎能不知 MybatisPlus?

Step6: 配置檔案的設定

application.properties裡面指定了使用哪個環境的配置檔案。

學Java, 怎能不知 MybatisPlus?

Step7: 測試類

學Java, 怎能不知 MybatisPlus?

繼續閱讀