【发布时间】:2013-05-17 11:00:30
【问题描述】:
如何将ArrayList 作为参数从Java 类传递给StoredProcedure?
我有一个方法可以调用数据库StoredProcedure,如下面的代码所示:
public void insertFileDownload(ArrayList<String> spareaList, ArrayList<String> spcollrtList, ArrayList<String> spmaintRtList, ArrayList<String> spenfRtList) {
if (spareaList != null) {
for (String a : spareaList) {//for Areas
Map<String, Object> param = new HashMap<String, Object>();
param.put("areaName", a);
param.put("collroutesName", null);
param.put("maintrtsName", null);
param.put("enfrtsName", null);
genericDao.sqlQueryWithParameters(" {call sp_addMeterJob(:areaName,:collroutesName,:maintrtsName,:enfrtsName) }", param);
}
} else if (spcollrtList != null) {//for CollectionRoutes
for (String cllRt : spcollrtList) {
Map<String, Object> param = new HashMap<String, Object>();
param.put("areaName", null);
param.put("collroutesName", cllRt);
param.put("maintrtsName", null);
param.put("enfrtsName", null);
genericDao.sqlQueryWithParameters(" {call sp_addMeterJob(:areaName,:collroutesName,:maintrtsName,:enfrtsName) }", param);
}
..........
目前我使用 if else 条件 4 次来检查每个传入的数组列表参数,以将值设置为存储过程的参数。
还有其他更好的方法可以避免许多 if else 块吗?
【问题讨论】:
-
也许您可以使用覆盖并稍微更改代码中的逻辑
-
将您的 SQL 存储过程添加到问题中。