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