40 動態sql和物理分頁

2021-09-03 01:11:42 字數 1495 閱讀 4292

學習目標:

1、條件查詢的實現,使用動態sql

2、理解邏輯分頁和物理分頁

3、掌握物理分頁的基本寫法

學習過程:

一、動態sql

這裡我們就簡單句幾個例子,比如現在需要根據商品名稱或者商品描述模糊查詢商品,當然如果使用者沒有輸入商品名稱就表示忽略這個查詢條件,首先修改對映檔案,實現這個功能,**如下:

select * from goods where 1=1

and goods_name like #

and goods_desc like #

對應的goodsdao實現就比較簡單了。**如下:

public listquerygoods(goods condition)
這樣就可以實現模糊查詢

二、分頁查詢

現在如果我們需要實現乙個更加複雜,但也是更加使用的功能就是條件查詢並分頁顯示,我們發現mybatis的session提供的selectlist方法之可以傳入乙個引數,那麼我們應該如何實現分頁呢?不過上面分頁,我們以前寫的分頁物件的演算法都是有用的,先寫乙個分頁物件,和我們以前寫的是一樣的。

1、邏輯分頁

事實上mybatis提供了乙個非常簡單分頁方法,不過這個分頁是每一次都是查詢所有的資料庫,然後在記憶體中再分頁,對於資料量比較少的情況還有作用,但是資料量比較大的時候就會占用很多記憶體。對映檔案的**和上一小節的條件查詢一樣。

select * from goods where 1=1

and goods_name like #

and goods_desc like #

在goodsdao中實現邏輯分頁。

// 分頁

public listquerygoods(goods condition, page page)

2、資料庫的物理分頁

資料庫的物理分頁就是使用資料庫的分頁演算法實現的,所以我們需要修改對映檔案,mysql的分頁還是比較簡單的。但是我們只能傳入乙個引數,所以這裡我們需要寫乙個引數對映

然後在修改sql對映

select * from goods where 1=1

and goods_name like #

and goods_desc like #

limit #,#

最好修改goodsdao的查詢,需要把條件物件和分頁組織成為map物件

// 分頁

public listquerygoods2(goods condition, page page)

動態sql和分頁

1.mybatis動態sql 1.1 if 1.2 trim 1.3 foreach 1.4 其他 choose set where2.模糊查詢 3種方式 2.1 引數中直接加入 2.2 使用 代替 不建議使用該方式,有sql注入風險 關鍵 與 區別?引數型別為字串,會在前後加單引號 則直接插入值 ...

動態sql和分頁

動態 sql 雖然在以前使用動態 sql 並非一件易事,但正是 mybatis 提供了可以被用在任意 sql 對映語句中的強大的動態 sql 語言得以改進這種情形。動態 sql 元素和 jstl 或基於類似 xml 的文字處理器相似。在 mybatis 之前的版本中,有很多元素需要花時間了解。myb...

動態sql和分頁

1.1 if 1.2 trim 1.3 foreach 遍歷集合,批量查詢 通常用於in關鍵字 1.4 其他 choose set where 注 1 mybatis中使用ognl表示式傳遞引數 2 優先使用 3 方式存在sql注入風險 resultmap 適合使用返回值是自定義實體類的情況 res...