mybatis動態sql和分頁

2021-09-03 07:57:18 字數 1738 閱讀 1020

1.mybatis動態sql

1.1 if

1.2 trim

1.3 foreach

1.4 其他

choose/set/where

2.模糊查詢(3種方式)

2.1 引數中直接加入%%

#2.2 使用$代替#(不建議使用該方式,有sql注入風險)

關鍵:#與$區別?

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

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

2) 優先使用#

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

2.3 sql字串拼接concat

/*like concat(concat('%',#),'%')*/

3.查詢返回結果集

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取結果),在大資料量的情況下這樣的分頁基本上是沒有用的

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.特殊字元處理

>(>)

<(<)

&(&)

空格( )

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

Mybatis動態sql和分頁

1.mybatis動態sql 1 if 2 trim 3 foreach 4 其他 5 choose set where2.模糊查詢 3種方式 2.1 引數中直接加入 2.2 使用 代替 不建議使用該方式,有sql注入風險 關鍵 與katex parse error expected eof got...

mybatis動態sql和分頁

1.1 if 1.2 trim 1.3 foreach 遍歷集合,批量查詢 通常用於in關鍵字 1.4 choose set where 2.1 引數中直接加入 2.2 使用katex parse error expected eof got at position 8 代替 不建議使用該方式,區別...