天天看點

Springboot怎麼整合Mybatis-plus???

Springboot怎麼整合Mybatis-plus???

一、添加依賴pom.xml

二、application.yml添加配置

三、application配置@MapperScan

到這裡就引入了MyBatis-Plus了。

四、代碼生成器

很多時候,都不想寫entity,mapper等檔案,這個時候就可以使用代碼生成器來自動生成對應的檔案了。

需要修改幾個地方:

1、資料庫連接配接 2、檔案需要放置的檔案夾位址。

具體代碼:

// 示範例子,執行 main 方法控制台輸入子產品表名回車自動生成對應項目目錄中

五、添加測試

這裡主要是Mybatis-Plus的CURD等方法。

六、資料分頁

1、簡單分頁方法

上面的分頁其實是調用BaseMapper的selectPage方法,這樣的分頁傳回的資料确實是分頁後的資料,但在控制台列印的SQL語句上看到其實并沒有真正的實體分頁,而是通過緩存來獲得全部資料中再進行的分頁,這樣對于大資料量操作時是不可取的,那麼接下來就叙述一下,真正實作實體分頁的方法。

2、 實體分頁方法

建立一個MybatisPlusConfig配置類檔案

重新調用mpUserService.page可以看到資料有實體分頁

3、XML自定義分頁

UserServiceImpl.java 調用分頁方法

七、列印sql日志

為了友善排查錯誤,很多時候需要列印mybatis生成的sql語句,這時候就需要列印日志了。

在application.yml中添加:

或者

八、邏輯删除

很多時候需要表的資料雖然删除了,但是還是希望不是真正删除資料,資料還是留在資料庫中,隻需要使用一個字段來做标志為即可,這時候就需要邏輯删除功能。

SpringBoot 配置方式:

application.yml 加入配置(如果你的預設值和mp預設的一樣,該配置可無):

注冊 Bean(3.1.1開始不再需要這一步):

實體類字段上加上@TableLogic注解

@TableField(select = false)注解,可以不查詢出deleted字段

@TableLogic

//@TableField(select = false)

private Integer deleted;

效果: 使用mp自帶方法删除和查找都會附帶邏輯删除功能 (自己寫的xml不會)

example

删除時 update user set deleted=1 where id =1 and deleted=0

查找時 select * from user where deleted=0

附件說明

邏輯删除是為了友善資料恢複和保護資料本身價值等等的一種方案,但實際就是删除。

如果你需要再查出來就不應使用邏輯删除,而是以一個狀态去表示。

九、主鍵政策

mybatis-plus 的主鍵生成的類型 預設類型 是 IdType.ID_WORKER全局唯一ID,内容為空自動填充(預設配置),雪花算法

1,局部主鍵政策實作

在實體類中 ID屬性加注解

2,全局主鍵政策實作

需要在application.yml檔案中添加

表示全局主鍵都采用該政策(如果全局政策和局部政策都有設定,局部政策優先級高)

十、自動填充

很多時候表中都需要添加建立時間,建立人,修改時間,修改人來跟蹤資料的來源和變動,但每次插入資料和修改資料的時候都要set這幾個字段又感覺很麻煩,這個時候就系統系統能自動填充這幾個字段了。

字段必須聲明TableField注解,屬性fill選擇對應政策,該申明告知 Mybatis-Plus 需要預留注入 SQL 字段

@TableField(fill = FieldFill.INSERT)

private LocalDateTime createTime;

屬性fill有四種對應政策,分别為:

自定義實作類 MyMetaObjectHandler:

測試使用

自動填充優化

insertFill方法每次插入的時候都會調用,如果不存在createTime屬性的話,每次插入都會白白調用了,浪費資源,是以可以判斷是否存在該屬性

希望,當更新時有設定時間,就用更新時設定的時間,當沒有設定時就自動填充更新時間,可以這樣設定

繼續閱讀