下面是一个通过spring的JDBC实现的一个查询方法可以实现:
public List selselCuiJiao(String[] codes,String swrydm)throws DataAccessException{
List list = null;
List list1 = new ArrayList();
StringBuffer str_code = new StringBuffer();
StringBuffer basesql = new StringBuffer(
"select a.nsrnbm,a.nsr_mc,to_list(c.kind_name||':'||c.item_name) as  item_name from  T_DJ_JGNSR a,dealed_data b,tax_item c "+
                " where  a.nsrnbm=b.code  and a.zgy=?  and  c.item_code=b.sz_dm||b.sm_dm  and b.kk_zt='0'");
try {
for (int m = 0; m < codes.length; m++) {
str_code.append(codes[m] + ",");
}
basesql.append(" and a.nsrnbm in ("+str_code.toString().substring(0,str_code.length() - 1) +")");
basesql.append(" and a.nsrnbm in (?) ");
basesql.append(" group by a.nsrnbm,a.nsr_mc");
System.out.println(basesql);
list = getJdbcTemplate().queryForList(basesql.toString(),new Object[] {swrydm}); if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Map map = (Map) list.get(i);
Company company = new Company();
company.setCode(map.get("nsrnbm").toString());
company.setCompanyName(map.get("nsr_mc").toString());
company.setOrganCollector(map.get("item_name").toString());
list1.add(company);
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return list1;
}但是我在a.nsrnbm in (?)  括号内以变量的形式处理就会报:
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [select a.nsrnbm,a.nsr_mc,to_list(c.kind_name||':'||c.item_name) as  item_name from  T_DJ_JGNSR a,dealed_data b,tax_item c  where  a.nsrnbm=b.code  and a.zgy=?  and  c.item_code=b.sz_dm||b.sm_dm  and b.kk_zt='0' and a.nsrnbm in (?)  group by a.nsrnbm,a.nsr_mc]; ORA-01722: 无效数字
; nested exception is java.sql.SQLException: ORA-01722: 无效数字以下是通过a.nsrnbm in (?)  方式处理报错的方法:
public List selselCuiJiao(String[] codes,String swrydm)throws DataAccessException{
List list = null;
List list1 = new ArrayList();
StringBuffer str_code = new StringBuffer();
StringBuffer basesql = new StringBuffer(
"select a.nsrnbm,a.nsr_mc,to_list(c.kind_name||':'||c.item_name) as  item_name from  T_DJ_JGNSR a,dealed_data b,tax_item c "+
                " where  a.nsrnbm=b.code  and a.zgy=?  and  c.item_code=b.sz_dm||b.sm_dm  and b.kk_zt='0'");
try {
for (int m = 0; m < codes.length; m++) {
str_code.append(codes[m] + ",");
}
String aaaaaa=str_code.toString().substring(0,
str_code.length() - 1);
// basesql.append(" and a.nsrnbm in ("+str_code.toString().substring(0,
// str_code.length() - 1) +")");
basesql.append(" and a.nsrnbm in (?) ");
basesql.append(" group by a.nsrnbm,a.nsr_mc");
System.out.println(basesql);
System.out.println(aaaaaa);
list = getJdbcTemplate().queryForList(basesql.toString(),new Object[] {swrydm, aaaaaa}); if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Map map = (Map) list.get(i);
Company company = new Company();
company.setCode(map.get("nsrnbm").toString());
company.setCompanyName(map.get("nsr_mc").toString());
company.setOrganCollector(map.get("item_name").toString());
list1.add(company);
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return list1;
}