欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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表示集合中每一個元素進(jìn)行迭代時的別名,

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

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

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

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,實(shí)際上如果你在傳入?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值

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

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

我這里傳過來的是Map 當(dāng)然也可以使用request.getparameter("name") 這個name為jsp或者h(yuǎn)tm頁面中的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ù)后進(jìn)行查詢

AND 條件 in

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

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

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

相關(guān)文章

  • Spring中如何使用Comparator接口

    Spring中如何使用Comparator接口

    Comparator比較器接口可以將自身傳遞給排序方法(比如Collections.sort或Arrays.sort),以便對排序順序進(jìn)行精確控制。本文講述Spring中如何使用Comparator接口
    2021-06-06
  • SpringBoot中版本兼容性處理的實(shí)現(xiàn)示例

    SpringBoot中版本兼容性處理的實(shí)現(xiàn)示例

    SpringBoot版本兼容性問題通常是由于依賴庫與SpringBoot版本不兼容引起的,本文主要介紹了SpringBoot中版本兼容性處理的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • SpringBoot封裝響應(yīng)處理超詳細(xì)講解

    SpringBoot封裝響應(yīng)處理超詳細(xì)講解

    這篇文章主要介紹了SpringBoot封裝響應(yīng)處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • 分布式醫(yī)療掛號系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存

    分布式醫(yī)療掛號系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存

    這篇文章主要為大家介紹了分布式醫(yī)療掛號系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Java中進(jìn)程與線程的區(qū)別

    Java中進(jìn)程與線程的區(qū)別

    這篇文章主要介紹了Java進(jìn)程與線程的區(qū)別,進(jìn)程(Process)是操作系統(tǒng)分配資源的基本單位,線程(Thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的基本單位,下文更多兩者區(qū)別。需要的小伙伴可以參考一下
    2022-05-05
  • Java使用EasyExcel動態(tài)添加自增序號列

    Java使用EasyExcel動態(tài)添加自增序號列

    本文將介紹如何通過使用EasyExcel自定義攔截器實(shí)現(xiàn)在最終的Excel文件中新增一列自增的序號列,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語拼音的方法

    Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語拼音的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語拼音的方法,實(shí)例演示了Java引用pinyin4j庫實(shí)現(xiàn)漢子轉(zhuǎn)化成拼音的使用技巧,需要的朋友可以參考下
    2015-12-12
  • Java?中?Class?Path?和?Package的使用詳解

    Java?中?Class?Path?和?Package的使用詳解

    這篇文章主要介紹了Java?中?Class?Path和Package的使用詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • 詳解java中的四種代碼塊

    詳解java中的四種代碼塊

    這篇文章主要介紹了詳解java中的四種代碼塊,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • java 獲取用戶的MAC地址多種方法實(shí)例詳解

    java 獲取用戶的MAC地址多種方法實(shí)例詳解

    這篇文章主要介紹了JAVA實(shí)現(xiàn)獲取用戶的MAC地址的多種方法實(shí)例,需要的朋友可以參考下
    2017-04-04

最新評論