问题描述:在利用jdbcTemplate做查询处理的时候,有个参数有多个值,sql如下
String sql = "select * from MNJX_PSG_SEG_xxx a, MNJX_xxx b "
+ " where a.flt_no = ? "
+ " and a.flt_date = ? "
+ " and a.aborad_no in ?"
+ " and a.nm_id = b.nm_id";
Object[] params = { memoryData.getFltNo(), Dater.com2ymd(memoryData.getDate()),number };
List<Map<String, Object>> result = xDao.query(sql, params);
这里的aborad_no会传多个值进来,首先想到的最笨的方法是写个循环去一个个查,但是这样很浪费资源。网上查阅了下自资料,
有人说直接放list进去,会报错
select * from MNJX_PSG_SEG_XXX a, MNJX_XXX b where a.flt_no = ? and a.flt_date = ? and a.aborad_no in ? and a.nm_id = b.nm_id]; SQL state [null]; error code [17004]; 无效的列类型;
解决:这里可以把aboard_no直接作为一个参数传进去,而不使用“?”占位符.
sql为:
String sql = "select * from MNJX_PSG_SEG_xxx a, MNJX_xxx b "
+ " where a.flt_no = ? "
+ " and a.flt_date = ? "
+ " and a.aborad_no in +("+nums+")";
+ " and a.nm_id = b.nm_id";
问题解决!