MyBatis Plus從入門到熟練使用(二、中級使用)

前面一節我們進行了MyBatis Plus的入門介紹,並且進行了新增和查詢的相關接口介紹和編寫,這一節我們繼續深入學習MP。

一、自定義SQL

1、自定義SQL語句使用方法

有時候我們使用MP自帶的條件構造器滿足不了我們的查詢條件了,MP也支持我們自定義SQL。但是要求MP的版本大於等於3.0.7!下面我們來實際應用一下。

我們首先在Mapper裏寫一個自定義的接口方法,這裏使用註解的方式編寫SQL語句,大家可以看到這是一個簡單的查詢所有信息的SQL語句,然後我們調用這個接口的方法如下圖:

運行測試一下:

測試成功!

2、自定義SQL條件構造器使用方法

這裏如果想要在這個方法裏面使用條件構造器該怎麼寫呢?這裏我們在新建一個接口如下圖:

這裏我們自定義了一個Lambda表達式的條件構造器,然後我們寫個接口測試一下:

運行測試一下:

 

測試成功!

二、分頁查詢

1、分頁配置

首先我們寫一個配置文件來配置MP的物理分頁插件,代碼如下:

然後我們來看一下MP所提供的分頁接口如下圖:

這兩個一個返回實體數據信息,一個返回Map信息,下面我們來實踐一下!

2、selectPage方法使用

這裏我們使用selectPage方法,需要傳入Page對象和條件構造器,最後返回一個Ipage對象,裏面包含下列信息:

分別爲總記錄數,總頁數,總數據集,當前頁,當前頁數據量,下面我們運行一下進行測試!

從執行的sql中可以看出執行了兩次sql查詢,一次是查詢記錄數的,一次查詢具體數據,查詢數據的有兩個參數0(Long)代表偏移量,2(Long)代表最大返回兩條記錄。然後可以看到總頁數2頁,總記錄數4個,我們看一下測試結果:

果然只返回了兩條數據,我們把內頁數量調爲4測試一下,如下圖:

可以看到,現在只有1頁了,且這一頁4條數據,說明我們測試成功!

3、selectMapsPage方法使用

下面我們再來測試一下返回Map數據的方法,其實和上面類似,只不過返回的是Map對象,如下圖所示:

運行一下看效果:

也沒問題,只不過返回的數據類型是Map對象,可以按需要取出使用。

4、分頁查詢優化

這樣分頁部分基本就講解完成了,但是還有一個問題就是每次我們的分頁查詢都是跑了兩次SQL語句,當我們不需要查詢記錄數的時候那系統性能就會有損耗,這裏我們來處理一下這個問題。

我們加入這一句代碼,MP在分頁查詢時就不會去查詢記錄數了,運行測試一下:

 

只執行了查詢數據的,沒有執行查詢總記錄數的,說明我們測試成功了!

三、數據修改更新接口開發

前面講了數據新增、查詢的各種接口的開發,這裏我們開始介紹數據修改更新接口的開發。

1、根據id進行修改

這裏我們還是選擇json數據格式進行數據傳輸:

運行看一下效果如下圖:

測試成功!並且我們看到MP也是可以滿足局部更新的,就是你輸入什麼參數就更新什麼值。

2、update方法修改

下面我們來看一下另外一種更新數據的方法update方法:

這裏我們使用update方法傳入了兩個參數,一個是實體,一個是條件構造器wrapper,我們看一下執行的sql語句:

我們的條件構造器中的參數在where的位置,實體類中的參數在set位置上,即條件構造器用來設置條件,實體用來設置修改內容。看一下執行結果:

測試成功!但是你可能覺得每次都要新建一個實體類比較麻煩,彆着急,也有不用新建實體類的方法:

3、不構建實體的修改方法

這裏我們直接把要set的對象放到了wrapper中,然後在update方法中的實體類位置傳入了null,運行測試一下:

也是可以的。我們也可以使用具有防誤寫功能的Lambda表達式來寫,如下圖:

4、Lambda條件構造器的修改方法

這裏我們把名字改爲張三三,年齡改爲88,運行一下看效果:

OK,測試成功!我們也可以使用鏈式的Lambda條件構造器進行修改,如下圖:

5、鏈式Lambda條件構造器的修改方法

運行看一下效果,

這裏我們把張三三的年齡修改爲18,看一下結果:

測試成功!

三、數據刪除接口開發

1、根據id刪除

首先我們來介紹簡單的通過id刪除的方法如下圖:

運行測試一下:

可以看到數據庫中id爲1的數據已經被刪除了。

2、deleteByMap方法刪除

這個跟我們前面的查詢時使用的selectByMap類似,傳入一個Map對象進行刪除,可以滿足根據數據庫中的某一列或多列信息進行刪除,這裏我們寫代碼介紹一下:

這裏我們根據性別進行信息刪除,比如我們刪除所有的女生信息,運行看一下效果:

顯示刪除了兩條信息,看一下sql語句:

再看一下數據庫驗證一下:

測試成功,所有的女生信息都已經被刪除了。

3、deleteBatchIds方法刪除

這個方法和我們前面使用的批量查詢功能也是類似的,只不過我們這兒是批量刪除,寫代碼測試一下:

這裏我們以傳入兩個id進行刪除爲例進行講解,運行看一下效果:

這裏我們把id爲2,3的數據刪除了,最後去數據庫驗證一下:

測試成功!

4、帶條件構造器的刪除方法

運行測試一下:

再去數據庫中驗證一下:

測試成功!

這樣我們結合上一篇文章已經使用MP把增刪改查的所有接口都寫完了!

這一節就先暫時介紹到這兒!

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章