一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - mybatis 查詢sql中in條件用法詳解(foreach)

mybatis 查詢sql中in條件用法詳解(foreach)

2021-08-03 11:07ya_ya_tou Java教程

這篇文章主要介紹了mybatis 查詢sql中in條件用法詳解(foreach),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

foreach屬性主要有item,index,collection,open,separator,close

1、item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名,

2、index指定一個(gè)名字,用于表示在迭代過程中,每次迭代到的位置,

3、open表示該語句以什么開始,

4、separator表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔符,

5、close表示以什么結(jié)束,

6、collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,

主要有一下3種情況:

a、如果傳入的是單參數(shù)且參數(shù)類型是一個(gè)List的時(shí)候,collection屬性值為list .

b、如果傳入的是單參數(shù)且參數(shù)類型是一個(gè)array數(shù)組的時(shí)候,collection的屬性值為array .

c、如果傳入的參數(shù)是多個(gè)的時(shí)候,我們就需要把它們封裝成一個(gè)Map了,當(dāng)然單參數(shù)也可以封裝成map,實(shí)際上如果你在傳入?yún)?shù)的時(shí)候,在MyBatis里面也是會(huì)把它封裝成一個(gè)Map的,map的key就是參數(shù)名,所以這個(gè)時(shí)候collection屬性值就是傳入的List或array對(duì)象在自己封裝的map里面的key.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<select id="findBy" resultMap="RfCustomerMemMap" parameterType="java.util.Map">
  SELECT
  <include refid="Column"/>
  FROM rfl_customer_mem a LEFT JOIN rfl_loan b ON a.member_no = b.loan_member_no
  WHERE a.member_no = #{memberNo} AND b.status IN
  <foreach collection="status" index="index" item="item" open="(" separator="," close=")">
   #{item}
  </foreach>
  <if test="name != null and name != ''">
   AND name = #{name}
  </if>
  <if test="idNumber != null and idNumber != ''">
   AND id_number = #{idNumber}
  </if>
  <if test="mobileNo != null and mobileNo != ''">
   AND mobile_no = #{mobileNo}
  </if>
  <if test="loanNo != null and loanNo != ''">
   AND loan_no = #{loanNo}
  </if>
  order by a.id DESC
  <if test="offset > -1 and rows > -1">
   limit #{offset},#{limit}
  </if>
 </select>

java調(diào)用查詢sql代碼

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public List<LoanMerchantMemEntity> findMerchantMemBy(String merchantName, String merchantNo, String socialCreditCode, String loanNo, int offset, int limit) {
  List<LoanMerchantMemEntity> list = new ArrayList<LoanMerchantMemEntity>();
  Map<String, Object> filter = new HashMap<String, Object>();
  filter.put("merchantName", merchantName);
  filter.put("socialCreditCode", socialCreditCode);
  filter.put("status", statsList());
  filter.put("loanNo", loanNo);
  filter.put("offset", offset);
  filter.put("limit", limit);
  filter.put("merchantNo", merchantNo);
 
  try {
   List<LoanMerchantMemEntity> row = loanMerchantMemDao.findBy(filter);
  } catch (Exception e) {
   LOGGER.error(filter, "查詢企業(yè)會(huì)員信息異常", e);
  }
  return list;
 }
 
 static List<String> statsList(){
  List<String> statusList = new ArrayList<String>();
  statusList.add("SUCCESS");
  statusList.add("DUE");
  statusList.add("OVER");
  return statusList;
 }

其中,map中key為status值類型為list,這種使用場(chǎng)景為第三種,即collection為map中的key值

補(bǔ)充:當(dāng)傳入一個(gè)String數(shù)組后,在sql中使用foreach語句實(shí)現(xiàn)IN查詢

當(dāng)我們從前臺(tái)傳遞過來的是一個(gè)數(shù)組是,后臺(tái)我們要進(jìn)行處理, 因?yàn)樵跀?shù)據(jù)庫中表的字段類型有可能是num 或者varchar;

我這里傳過來的是Map 當(dāng)然也可以使用request.getparameter("name") 這個(gè)name為jsp或者h(yuǎn)tm頁面中的id所對(duì)應(yīng)的name,

下面代碼中也是的:

?
1
2
3
String name=(String) params.get("name");
String[] hiddens = name.split(",");
params.put("name", hiddens);

當(dāng)我們經(jīng)過這一部分的處理后,數(shù)據(jù)就存入到map中了,傳入?yún)?shù)后進(jìn)行查詢

AND 條件 in

?
1
2
3
<foreach collection="name" index="index" item="item" open="(" separator="," close=")">
   #{item}
  </foreach>

在sql上面,我們進(jìn)行查詢的時(shí)候就OK啦!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/aiyawalie/article/details/52954138

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无人区在线观看免费视频国语 | 农夫69小说恋老妇小说 | 日本中文字幕在线观看视频 | 图片一区| freee×xx性欧美| 久久精品人人做人人爽97 | 武侠艳妇屈辱的张开双腿 | 久久精品成人免费网站 | 亚洲男人的天堂视频 | 亚洲国产精品高清在线 | 欧美同性猛男videos | 日本一道本视频 | 四虎视屏 | 女人肮脏的交易中文字幕未删减版 | 午夜影视在线观看 | 四虎免费在线观看 | ass天天裸妇pics| 红怡院欧洲 | 91精品啪在线观看国产91九色 | 国产精品欧美日韩一区二区 | 黑帮少爷爱上我第8集在线观看 | 99热成人精品热久久669 | 国产美女做爰免费视频软件 | 国产视频一区二 | 色综合天天综合网看在线影院 | 日韩精品特黄毛片免费看 | 久久综合狠狠综合久久综合88 | 精品在线91 | 亚洲老头与老太hd | 国产高清久久 | 免费在线观看伦理片 | 国产精品九九久久一区hh | 午夜免费体验30分 | 亚洲+国产+图片 | 天天久久综合网站 | 亚洲国产网址 | 极品手交handjobtattoo | 亚洲大尺码 | 国产成人综合亚洲亚洲欧美 | 全肉np巨肉一女np高h双龙 | 欧洲vodafonewi喷潮 |