1.mybatis動態sql
(1) if
(2) trim
(3)foreach
(4)其他
(5)choose/set/where
2.模糊查詢(3種方式)
2.1 引數中直接加入%%
2.2 使用$代替#(不建議使用該方式,有sql注入風險)
關鍵:#與katex parse error: expected 'eof', got '#' at position 21: …區別? 引數型別為字串,#̲會在前後加單引號['],則直接插入值2.3sql字串拼接concat注:mybatis中使用ognl表示式傳遞引數
優先使用#
$方式存在sql注入風險
3.查詢返回結果集
resultmap:適合使用返回值是自定義實體類的情況3.1 使用resultmap返回自定義型別集合resulttype:適合使用返回值的資料型別是非自定義的,即jdk的提供的型別
3.2 使用resulttype返回list
3.3 使用resulttype返回單個物件
3.4 使用resulttype返回list,適用於多表查詢返回結果集
3.5 使用resulttype返回map,適用於多表查詢返回單個結果集
4.分頁查詢
為什麼要重寫mybatis的分頁?4.1 匯入分頁外掛程式mybatis的分頁功能很弱,它是基於記憶體的分頁(查出所有記錄再按偏移量offset和邊界limit取結果),在大資料量的情況下這樣的分頁基本上是沒有用的
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.1 if 1.2 trim 1.3 foreach 1.4 其他 choose set where2.模糊查詢 3種方式 2.1 引數中直接加入 2.2 使用 代替 不建議使用該方式,有sql注入風險 關鍵 與 區別?引數型別為字串,會在前後加單引號 則直接插入值 ...
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 代替 不建議使用該方式,區別...