動態sql和分頁

2021-09-27 08:10:11 字數 3299 閱讀 2317

動態 sql

雖然在以前使用動態 sql 並非一件易事,但正是 mybatis 提供了可以被用在任意 sql 對映語句中的強大的動態 sql 語言得以改進這種情形。

動態 sql 元素和 jstl 或基於類似 xml 的文字處理器相似。在 mybatis 之前的版本中,有很多元素需要花時間了解。mybatis 3 大大精簡了元素種類,現在只需學習原來一半的元素便可。mybatis 採用功能強大的基於 ognl 的表示式來淘汰其它大部分元素。

模糊查詢

a、引數中直接加入%%

b、 使用katex parse error: expected 'eof', got '#' at position 8: 代替#̲(不建議使用該方式,…區別?

引數型別為字串,#會在前後加單引號[』],$則直接插入值

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

2) 優先使用#

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

查詢返回結果集的處理

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

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

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

b、 使用resulttype返回list

c、 使用resulttype返回單個物件

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

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

分頁查詢

為什麼要重寫mybatis的分頁?

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

匯入分頁外掛程式

com.github.pagehelper

pagehelper

5.1.2

將 pagehelper 外掛程式配置到 mybatis.cfg.xml 中

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

//設定分頁處理

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

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

pagepage = (page)list;

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

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

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

使用pageinfo

pageinfo pageinfo = new pageinfo(list);

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

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

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

特殊字元處理

>(>)   

&(&)

空格( )

相關的配置

select * from t_mvc_book

price ]]>

select * from t_mvc_book

and # < price

and # > price

/**

* 處理特殊字元

* @param bookvo

* @return

*/listlist6(bookvo bookvo);

/** * 處理特殊字元

動態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和分頁

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

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注入風險 關鍵 與 區別?引數型別為字串,會在前後加單引號 則直接插入值 ...