mybatis-plus是國內的開源項目 簡化mybatis的使用和開發 其中通用mapper接口非常好用 有單表所有的增刪改查
只需要自身的mapper接口繼承這個接口 然后泛型寫要操作的實體類即可
這是mybatis-plus的官網 文檔寫的還不錯 https://mp.baomidou.com/guide/
可以在SSM項目中使用 也可以集成到spring boot 我這里是在spring boot中使用
首先是maven依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
這是目前最新版本的依賴,導入了這個之后不需要再導入mybatis的依賴了 因為mybatis-plus里面就包含了mybatis
然后在spring boot 啟動類上 加上這個注解@MapperScan("你的mapper接口所在的包名") 這個注解就是掃描指定包名下的所有mapper接口
這個注解其實使用mybatis也要加,掃描到你的mapper接口之后 才能在運行時 給你生成代理類 執行sql語句之類的
然后在spring boot啟動類多加一個方法,因為現在肯定是都要使用分頁查詢功能的,而mybatis本身只有內存分頁 就是將所有滿足條件的記錄查出 然后分頁 所以使用mybatis-plus自帶的分頁插件
這是將mybatis-plus自帶的分頁插件注入到spring ioc容器中管理
1 /** 2 * 分頁插件 3 */ 4 @Bean 5 public PaginationInterceptor paginationInterceptor() { 6 PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); 7 // paginationInterceptor.setLimit(你的最大單頁限制數量,默認 500 條,小於 0 如 -1 不受限制); 8 return paginationInterceptor; 9 }
既然是ORM框架 肯定是操作數據庫 那主要就是實體類和dao接口(叫mapper接口也行 很多叫法 習慣叫dao)
先說實體類 mybatis-plus由提供一個類 配置好數據庫連接信息等 輸入表名就能自動產生實體類 和dao接口
至於類名和屬性名會根據你數據庫表名或者列名有下划線都會把下一個字母替換成大寫 這樣也好 不用去配置映射關系了
但是如果你不想這樣 想自己指定表名列名的映射關系 也有提供了注解
首先第一個注解 加在類上 指定和這個實體類對應的數據庫表名
指定完表名 還有主鍵需要指定,注解這里有一點需要注意 默認給你設置的注解類型是ID_WORKER 如果你要插入的實體類對象主鍵屬性為空
他會自動給你創建一個十幾位長的唯一ID 如果你主鍵屬性的類型不是long 是int啥的 就會報錯 所以要改成long 對應數據庫也要改成 bigint
如果你不想使用他給你生成的 那么把主鍵類型設置為AUTO 就是數據庫自增 他不會進行處理
指定完主鍵 剩下的都是普通屬性
實體類大致就是這樣 剩下的 就是dao類 直接自己定義一個接口 然后繼承BaseMapper<你要操作的實體類> 就可以 這時候你的接口已經有了對整個類的所有增刪改查方法
這些增刪改查方法大概有十幾個 單看方法名字和要傳遞的參數也可以看懂 還是比較簡單的
我這里單獨講一下分頁查詢
分頁查詢要是selectPage 這個方法 接收兩個參數 第一個參數是要一個IPage這個接口的實現類 其實就是Page 這個是mybatis-plus 提供的分頁類
構造方法可以傳遞要查詢第幾頁 和每頁查詢幾條 如果不傳 默認是查詢第1頁 和每頁查詢10條
第二個參數就是要Wrapper接口的實現類 這里是查詢 所以傳 QueryWrapper 這個類 還有一個UpdateWrapper由於修改時 傳遞條件
QueryWrapper 這個類 里面有很多方法 比如 eq like Between 等 參數一般都是數據庫列名和值 然后每個方法的返回值也是QueryWrapper 所以可以鏈式編程
其實這個本質也就是將我們傳遞的列名和值 進行拼接成條件字符串
最后這個方法會返回一個IPage接口 里面有幾個get方法 可以獲得當前頁 總頁數 總記錄數 結果集等 可以強轉為Page 這樣比較方便 功能更強
如果是多表聯合查詢 可以選擇 在dao接口中 寫一個方法 然后使用@select注解 里面寫要執行的sql語句 返回值寫 List<Map<String,Object>>
如果是前后端分離項目 后端只響應給前端json文件 那么就不需要處理 直接返回給前端 經過spring MVC的json格式化之后 和你返回實體類格式化沒區別
但是如果還是想要轉換成一個類來使用 可以單獨定義一個類 里面寫上要用的屬性名 這時候@select注解里面的sql語句的列名就要和這個類屬性名一樣
返回值就可以寫成List<剛定義的實體類名> 由於列名和屬性名對應上了 mybatis-plus 就可以自動幫我們把值封裝到對象中
然后可以在spring boot配置文件中 配置一下打印sql語句 這樣還是比較方便調試之類的
#mybatis-plus 控制台打印執行SQL語句
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
我這用得是yml格式的配置文件
基本的使用就這些 還有很多別的插件和功能 我暫時也沒有去用到 用到以后再回來更新吧