動態sql和分頁

2021-10-10 15:37:24 字數 1861 閱讀 2584

1.1 if

1.2 trim

1.3 foreach

遍歷集合,批量查詢、通常用於in關鍵字

1.4 其他

choose/set/where

注:

1) mybatis中使用ognl表示式傳遞引數

2) 優先使用#

3) $方式存在sql注入風險

resultmap:適合使用返回值是自定義實體類的情況

resulttype:適合使用返回值的資料型別是非自定義的,即jdk的提供的型別

3.1 使用resultmap返回自定義型別集合

3.2 使用resulttype返回list3.3 使用resulttype返回單個物件

3.4 使用resulttype返回list,適用於多表查詢返回結果集

3.5 使用resulttype返回map,適用於多表查詢返回單個結果集

4.分頁查詢

為什麼要重寫mybatis的分頁?

mybatis的分頁功能很弱,它是基於記憶體的分頁(查出所有記錄再按偏移量offset和邊界limit取結果),在大資料量的情況下這樣的分頁基本上是沒有用的

struts***

定義乙個***類

invoke

sysout(「action方法被呼叫前執行的功能」)

method.invoke

sysout(「action方法被呼叫後執行的功能」)

struts-sy.xml

將***的類申明到interceptors

引用***

4.1 匯入分頁外掛程式

com.github.pagehelper

pagehelper

5.1.2

4.2 將pagehelper外掛程式配置到mybatis中

4.3 在你需要進行分頁的mybatis方法前呼叫pagehelper.startpage靜態方法即可,緊跟在這個方法後的第乙個mybatis查詢方法會被進行分頁

//設定分頁處理

if (null != pagebean && pagebean.ispaginate())

4.4 獲取分頁資訊(二種方式)

4.4.1 使用外掛程式後,查詢實際返回的是page,而非list,page繼承了arraylist,同時還包含分頁相關的資訊

pagepage = (page)list;

system.out.println("頁碼:" + page.getpagenum());

system.out.println("頁大小:" + page.getpagesize());

system.out.println("總記錄:" + page.gettotal());

4.4.2 使用pageinfo

pageinfo pageinfo = new pageinfo(list);

system.out.println("頁碼:" + pageinfo.getpagenum());

system.out.println("頁大小:" + pageinfo.getpagesize());

system.out.println("總記錄:" + pageinfo.gettotal());

5.特殊字元處理

>(>)

<(<)

&(&)

空格( )

作業:1)choose、set、where標籤的使用(寫例子)

2)mybatis實現批量insert/update/delete(選做)

4)使用foreach標籤遍歷map集合 item是value index是key

動態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...

Mybatis動態sql和分頁

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