warning
(依賴)引入 MyBatis-Plus 之后請(qǐng)不要再次引入 MyBatis 以及 MyBatis-Spring塑崖,以避免因版本差異導(dǎo)致的問題烂完。
集成 配置
只需講將mybatis的sqlSessionFactory 替換為MP的com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
原生MyBatis
寫mapper接口浦箱,CRUD方法枚赡,mapper.xml配置文件谷誓,寫sql
MP
只需寫接口并繼承BaseMapper迫横,不需要寫方法番舆,不需寫mapper.xml及sql(已經(jīng)封裝好,提供了通用的CRUD操作)
剖剖原理
內(nèi)部肯定還是要寫sql的
xxxMapper的本質(zhì) org.apache.ibatis.binding.MapperProxy
MapperProxy中sqlSession-->sqlSessionFactory
全局策略配置
駝峰命名轉(zhuǎn)換name="dbColumnUnderline"矾踱,MP2.3版本默認(rèn)支持了column的“全局策略” ?如屬性lastName自動(dòng)匹配last_name字段恨狈。單個(gè)指定@TableField(value="last_name")
主鍵策略name="idType",對(duì)所有生效呛讲。單個(gè)類@TableId(value="id",type=IdType.AUTO)
表前綴策略name="tablePrefix"禾怠。單個(gè)類@TableName(value="tbl_employee")
插入操作
直接獲取自增生成的ID ?ID自動(dòng)生成后,可直接獲取贝搁。obj.getId()
查詢操作
分頁(yè) selectPage(new Page<>(2,2)) ?--基于內(nèi)存吗氏,一般不用這個(gè) 。物理分頁(yè)還需結(jié)合分頁(yè)插件
真正強(qiáng)大的在于... ...
條件構(gòu)造器EntityWrapper
在使用上Condition與其類似雷逆,兩者都繼承了Wrapper
注意:使用的是數(shù)據(jù)庫(kù)字段弦讽,不是Java屬性
ActiveRecord(AR)
實(shí)現(xiàn):只需讓實(shí)體類繼承Model類且實(shí)現(xiàn)主鍵指定方法即可
基于本身對(duì)象來進(jìn)行操作(本質(zhì)還是調(diào)用原方法,類似語(yǔ)法糖)
代碼生成器
對(duì)比MBG:
MBG基于xml配置文件膀哲,MP基于java代碼
MBG生成實(shí)體類往产、mapper接口、mapper映射文件某宪,MP還能生成Service層仿村,Controller層
(依賴)apache-velocity
java代碼進(jìn)行配置(官網(wǎng)有示例代碼)
插件機(jī)制
xml直接配置:
分頁(yè)插件(物理分頁(yè))
執(zhí)行分析插件 (防止誤刪或惡意(mysql5.6.3以上))
性能分析插件(SQL時(shí)長(zhǎng))
樂觀鎖插件(version版本號(hào)機(jī)制)
自定義全局操作
如果你想實(shí)現(xiàn)各種操作,但卻不想在mapper映射文件中寫sql ... ...
應(yīng)用之邏輯刪除
本質(zhì)上是更新操作而非刪除操作