mybatis 動態sql及分頁

2021-09-03 05:15:03 字數 1668 閱讀 8009

①:if 一樣的用拼接條件

bname = #,

②:trim 格式化標籤

prefix:字首

suffix :字尾

suffixoverrides :減除最後乙個「  , 」

③:foreach

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

select

from t_mvc_book

where bid in

#

2.1 引數中直接加入%%

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

關鍵:#與$區別?

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

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

2) 優先使用#

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

2.3 sql字串拼接concat

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

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

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

3.2 使用resulttype返回list

3.3 使用resulttype返回單個物件

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

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

①:mybatis分頁

select

from t_mvc_book

limit #,#

為什麼要重寫mybatis的分頁?

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

在mybatis的配置檔案中加入***

/*

jdbc :

map-->來自於jsp

basedao

1、getcountsql-->total-->pagebean.settotal

2、set pagesql-->list-->返回

hibernate:

map-->來自於jsp

basedao

1、getcounthql-->total-->pagebean.settotal

2、不需要拼接出pagehql-->hibernate.setfirst../setmaxrows..

mybatis中借助 github提供的pagehelper

pagehelper.start

業務流程

total-->pagebean.settotal

*/

方法:

public listlist3(map map, pagebean pagebean) 

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

return maps;

}

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