簡體   English   中英

分割清單 <string> 基於comman(,)分隔符並處理NUmberformat異常

[英]Splitting a List<string> on the basis of comman ( ,) delimiter and handling NUmberformat exception

我有以下方法applyIncentives需要ListlstIds

public void applyIncentives(List<String> lstIds) throws Exception {
    Session session = null;
    Transaction tx = null;
    String pricingTierId = null;
    if (lstIds != null && lstIds.size() > 0) {
        for (String lstpricingTierIds : lstIds) {
            pricingTierId = lstpricingTierIds.trim();            
        }
    }

    try {
        session = HibernateSessionFactory.getSession();
        tx = session.beginTransaction();

        SQLQuery query = session.createSQLQuery("select * from customer.apply_incentives(:pricingTierId)");
        query.setString("pricingTierId", pricingTierId);
        query.list();

        tx.commit();
        approveFlag = true;
    }
    catch (Exception ex) {
        log.error("Exception", ex);
    }
    finally {
        if (session != null)
            session.close();
    }
    return approveFlag;
}

我經過pricingTierId從lstIds並傳遞到它接受一個整數的存儲過程。

調試時,lstIds的值為“ 52512,85822”,兩個pricingTierId's用逗號(,)分隔。

在將pricingTierId傳遞到存儲的Proc之前,我已經編寫了以下內容:

String pricingTierId = null ;
if (lstIds != null && lstIds.size() > 0) {
    for (String lstpricingTierIds : lstIds) {
        pricingTierId = lstpricingTierIds.trim();            
    }
}

我的問題:

  1. 如何用定界逗號(,)分隔pricingTierId 由於我要傳遞List List<String> lstIds所以不能直接使用pricingTierId = lstpricingTierIds.trim().split(",")

  2. 如果我將String pricingTierId = null更改為String[] pricingTierId則在query.setString("pricingTierId", pricingTierId);會出錯query.setString("pricingTierId", pricingTierId); 如果我使用query.setInteger("pricingTierId", Integer.parseInt(pricingTierId)); 然后我得到Numberformat Exception,因為逗號(,)被傳遞給存儲的proc。

按照建議添加了代碼

List<String> pricingTierId = null;
if (lstIds != null && lstIds.size() > 0) {
    for(String lstpricingTierIds : lstIds) {
        pricingTierId = Arrays.asList(lstpricingTierIds.trim().split(","));
    }
}

但是我在以下錯誤:

query.setString("pricingTierId", pricingTierId);

setString不能用於String[]

而且我不能使用query.setInteger("pricingTierId", Integer.parseInt(pricingTierId)); 就像說的那樣,將pricingTierId的類型pricingTierIdString

如何將其從拆分創建的數組中取出然后循環:

String[] pricingTierIdArray = lstpricingTierIds.trim().split(",");
for(String s : pricingTierIdArray ) {
    query.setInteger("pricingTierId", Integer.parseInt(s));
}

setInteger()方法將覆蓋先前的值。 除非您更改查詢,否則只能設置一個ID。

或者只是:

String pricingTierIdArray = lstpricingTierIds.trim().split(",")[0]; //This depends on whether you need both values or not.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM