[英]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();
}
}
我的問題:
如何用定界逗號(,)分隔pricingTierId
? 由於我要傳遞List List<String> lstIds
所以不能直接使用pricingTierId = lstpricingTierIds.trim().split(",")
。
如果我將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
的類型pricingTierId
為String
。
如何將其從拆分創建的數組中取出然后循環:
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.