mybatis之動態sql和分頁

2021-09-28 18:04:17 字數 2673 閱讀 3442

mybatis動態sql

if、trim、foreach

if: if是條件,如果傳的值不為空,那麼這個欄位就可以發生改變;如果傳的值為空,那麼執行sql的時候這個欄位就看不到了

**trim:**去空格

舉例:

insert into t_mvc_book

bid,

bname,

price,

#,#,

#,

listselectbooksin(@param("bookids") list bookids);
select * from t_mvc_book where bid in 

#

測試類

@test

public void selectbooksin()

}

#

$concat

注意:#自帶引號,$有sql注入的風險

常用的模糊查詢方法

select * from t_mvc_book where bname like #

select * from t_mvc_book where bname like '$'

select * from t_mvc_book where bname like concat(concat('%',#),'%')

推薦的兩種:

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

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

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

select * from t_mvc_book

3.2 使用resulttype返回list

select * from t_mvc_book

3.3 使用resulttype返回單個物件

select * from t_mvc_book where bid in

#

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

select * from t_mvc_book where bid in

#

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

select * from t_mvc_book where bid = #

測試**

@test

public void list()

map map = new hashmap();

// map.put("bookids",list);

// listmaplist = this.bookservice.list4(map);

// for (map m : maplist)

map.put("bid",1);

system.out.println(this.bookservice.list5(map));

}

為什麼要重寫mybatis的分頁?

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

1、匯入pom依賴

com.github.pagehelper

pagehelper

5.1.2

2、mybatis.cfg.xml配置***

3、使用pagehelper進行分頁

public listlistpager(map map ,pagebean pagebean) 

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

return list;

}

4、處理分頁結果

兩種方法解決

第一種

select * from t_mvc_book where  # and price < #  ]]>

第二種

select * from t_mvc_book where >  price > # and price < #

mybatis學習之動態sql

1 select查詢 簡單的select類似如下 select id findbyid resultmap studentresult parametertype integer select from t student where id select 1 if 常用於各種查詢的條件判斷部分 se...

mybatis動態SQL之if標籤

我們根據實體類的不同取值,使用不同的 sql 語句來進行查詢。比如在 id 如果不為空時可以根據 id 查詢,如果 username 不同空時還要加入使用者名稱作為條件。這種情況在我們的多條件組合查詢中經常會碰到。根據使用者資訊,查詢使用者列表 param user return listfindb...

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