最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年02月03日 17:13:44   作者:ya_ya_tou  
這篇文章主要介紹了mybatis 查詢sql中in條件用法詳解(foreach),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

1、item表示集合中每一個元素進行迭代時的別名,

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

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

4、separator表示在每次進行迭代之間以什么符號作為分隔符,

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

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

主要有一下3種情況:

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

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

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

<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代碼

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è)會員信息異常", 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,這種使用場景為第三種,即collection為map中的key值

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

當(dāng)我們從前臺傳遞過來的是一個數(shù)組是,后臺我們要進行處理, 因為在數(shù)據(jù)庫中表的字段類型有可能是num 或者varchar;

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

下面代碼中也是的:

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

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

AND 條件 in

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

在sql上面,我們進行查詢的時候就OK啦!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java內(nèi)存模型及其作用詳解

    Java內(nèi)存模型及其作用詳解

    在現(xiàn)代計算機系統(tǒng)中,尤其是多處理器架構(gòu)下,每個處理器都有自己的高速緩存,而主內(nèi)存(RAM)是所有處理器共享的數(shù)據(jù)存儲區(qū)域,這篇文章主要介紹了深入理解Java內(nèi)存模型及其作用,需要的朋友可以參考下
    2024-04-04
  • SpringBoot+websocket實現(xiàn)消息對話功能

    SpringBoot+websocket實現(xiàn)消息對話功能

    WebSocket是一種在Web應(yīng)用程序中實現(xiàn)實時雙向通信的技術(shù),它可以用于在線游戲、在線聊天、推送通知、實時監(jiān)控等,并且比傳統(tǒng)的輪詢技術(shù)更加高效和可靠,本文就給大家介紹基于SpringBoot+websocket實現(xiàn)消息對話功能,感興趣的小伙伴可以自己動手試一試
    2023-09-09
  • spring boot 下支付寶的開箱既用環(huán)境

    spring boot 下支付寶的開箱既用環(huán)境

    這篇文章主要介紹了spring boot 下支付寶的開箱既用環(huán)境包括使用場景和使用技巧,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-10-10
  • java8 stream的分組功能實例介紹

    java8 stream的分組功能實例介紹

    這篇文章主要給大家介紹了關(guān)于java8 stream的分組功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用java8具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • JDK源碼之線程并發(fā)協(xié)調(diào)神器CountDownLatch和CyclicBarrier詳解

    JDK源碼之線程并發(fā)協(xié)調(diào)神器CountDownLatch和CyclicBarrier詳解

    我一直認為程序是對于現(xiàn)實世界的邏輯描述,而在現(xiàn)實世界中很多事情都需要各方協(xié)調(diào)合作才能完成,就好比完成一個平臺的交付不可能只靠一個人,而需要研發(fā)、測試、產(chǎn)品以及項目經(jīng)理等不同角色人員進行通力合作才能完成最終的交付
    2022-02-02
  • 淺談Maven環(huán)境隔離應(yīng)用

    淺談Maven環(huán)境隔離應(yīng)用

    這篇文章主要介紹了淺談Maven環(huán)境隔離應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例講解

    Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例講解

    這篇文章主要介紹了Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例,注意這里的雙端鏈表不是雙向鏈表,是在單鏈表的基礎(chǔ)上保存有對最后一個鏈接點的引用,需要的朋友可以參考下
    2016-04-04
  • Spring Cloud Gateway組件的三種使用方式實例詳解

    Spring Cloud Gateway組件的三種使用方式實例詳解

    Spring Cloud Gateway是 Spring 官方基于 Spring5.0 、 SpringBoot2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān)旨在為微服務(wù)框架提供一種簡單而有效的統(tǒng)一的API 路由管理方式,統(tǒng)一訪問接口,這篇文章主要介紹了Spring Cloud Gateway組件的三種使用方式,需要的朋友可以參考下
    2024-01-01
  • 深入解讀Java代碼組織中的package包結(jié)構(gòu)

    深入解讀Java代碼組織中的package包結(jié)構(gòu)

    這篇文章主要介紹了Java代碼組織中的package包結(jié)構(gòu),是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • Java使用kafka發(fā)送和生產(chǎn)消息的示例

    Java使用kafka發(fā)送和生產(chǎn)消息的示例

    本篇文章主要介紹了Java使用kafka發(fā)送和生產(chǎn)消息的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

沽源县| 鄂托克前旗| 梅河口市| 潮州市| 凤冈县| 保康县| 宜兴市| 海城市| 炉霍县| 额尔古纳市| 磐安县| 岑巩县| 林甸县| 松滋市| 周至县| 西青区| 沈丘县| 博客| 巢湖市| 勐海县| 栾城县| 泰和县| 册亨县| 忻州市| 黎平县| 洛川县| 宽甸| 内丘县| 平山县| 馆陶县| 锡林浩特市| 福州市| 郯城县| 工布江达县| 阳信县| 华亭县| 彭阳县| 息烽县| 广东省| 丹棱县| 西林县|