Mybatis plus 高級


最近項目重構 dao層使用的Mybatis plus,有必要總結下。

Mybatis plus 會自動維護Mybatis 以及 MyBatis-Spring 相關依賴  所以在構建項目時候 只需要引入Mybatis plus 的maven坐標就OK了

 

Mybatis plus的核心在BaseMapper<T>

包含了各種各樣的 接口方法

所以我們繼承后就可以拿來使用了!

Q1:

  在插入時候 bean(包含ID) 需要 使用主鍵策略    (數據庫ID自增)

  使用注解@Table 

   在Bean上面加上注解 @TableId(value="id", type=IdType.AUTO)

   可以配置全局策略 就不用每個表都寫這個注解了! 處理下划線到駝峰命名的問題

Q2:

 MP會默認使用實體類的類名到數據庫中找對應的表

 使用注解@TableName(value=“tx_user“)解決

 可以配置全局策略 加個統一的前綴,就不用每個表都寫這個注解了! 前綴+實體類  是table name

 

Q3:

 Mybatis plus全局策略配置

 xx.xx.xx.GlobalConfiguration

   默認是true  解析駝峰命名 到 下划線對應

   

Q4:

 @TableField(value="last_name")  對應數據庫的名字

 @TableField(exist=false)   這個字段數據庫沒有哦  插入時候不會報錯(用的比較少)

 

Q5:

 在插入一條數據時候,獲取主鍵值

 自動的回寫到實體類Bean中 不需要額外的操作

  

Q6:

  插入時候

   方法 insert()  只有非空的才會出現在sql語句日志中

           insertAllColumn() 插入所有字段  空的也是顯示的  日志打印會出來這幾個字段  但是是null 結果也是一樣的   返回Integer

 

Q7:

   updateById()   通用更新操作  返回Integer

   updateAllColumnByID  會插入null

Q8:

   selectById()

   selectOne( entity )  通過多個列進行查詢  非空屬性作為條件進行查詢了  要返回一條數據 要不就報錯了

    List<T> selectBatchIds(List<? extends Serializable> idList)   //通過多個Id進行查詢

   LIst<T> selectByMap<columnMap>  // key 是列名"school_name" 

   List<T> selectPage(RowBounds rowBounds, Warpper<T> wrapper); //分頁查詢  Page的對象繼承了rowBounds   底層沒有使用limit  使用的Mybatis的  內存的分頁方式  參數 第幾頁  每頁顯示多少條數據

      Mybatis有個PageHelper    Mybatis Plus 有自己的分頁插件 

  

補充 selectList

        selectOne

        selectById

        selectAll

        selectCount

 

Q9:  (remove)

  Integer deleteById(Serializable id)

  Integer deleteByMap(@Param("crm") Map<String, Object> columnMap)    key一定要寫數據庫的列名

  Integer deleteBatchIds(LIst<? extends Serializable> iDList)    //批量刪除  底層sql 使用的in

  

以上是常用的CRUD

 

原理分析


 

 

  BaseMapper 中提供了通用的CRUD方法

 

 

補充功能強大的條件構造器 EntityWrapper


 

 

 實體包裝器,主要用於處理SQL拼接,排序,實體參數查詢等。

 

 

條件參數說明

查詢方式 說明
setSqlSelect 設置 SELECT 查詢字段
where WHERE 語句,拼接 + WHERE 條件
and AND 語句,拼接 + AND 字段=值
andNew AND 語句,拼接 + AND (字段=值)
or OR 語句,拼接 + OR 字段=值
orNew OR 語句,拼接 + OR (字段=值)
eq 等於=
allEq 基於 map 內容等於=
ne 不等於<>
gt 大於>
ge 大於等於>=
lt 小於<
le 小於等於<=
like 模糊查詢 LIKE
notLike 模糊查詢 NOT LIKE
in IN 查詢
notIn NOT IN 查詢
isNull NULL 值查詢
isNotNull IS NOT NULL
groupBy 分組 GROUP BY
having HAVING 關鍵詞
orderBy 排序 ORDER BY
orderAsc ASC 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 條件語句
notExists NOT EXISTS 條件語句
between BETWEEN 條件語句
notBetween NOT BETWEEN 條件語句
addFilter 自由拼接 SQL
last 拼接在最后,例如:last("LIMIT 1")

 

 

  范圍:

 .between("age",2,6);

 .like("name","jack")

 .or()  //或者使用orNew()  orNew() 之前的結果封裝 與后面的進行拼接

.like("email","a")  //或者郵箱有a 的

 

  修改操作:

 userEntity 屬性是要修改的值

Wrapper是條件 不停的.eq (就是where了)

  .update(UserEntity, Wrapper  )

 

  刪除操作

  .update()

  封裝一個添加構造器就OK了 .eq() .eq()

 

高級點的查詢

 排序的:

  .orderBy()  默認升序

  .orderDesc() 降序   傳入的是集合!

  .last( “desc”)   手動把SQL拼接到最后(有sql注入的風險) 

  .last("limit 1,3")

 

  

 

 

    

          

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM