//获取list(clob做参数)
public List findDataByClob(final String str, final String[] clobArgs){
final StringBuffer sql = new StringBuffer();
sql.append(str);
final List list = new ArrayList();
try{
this.getJdbcTemplate().query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con){
//throws SQLException {
PreparedStatement ps = null;
try{
String str = sql.toString();
ps=con.prepareStatement(str);
for (int i = 0; i < clobArgs.length; i++) {
Clob clob=con.createClob();
clob.setString(i+1,new String(clobArgs[i]));
ps.setClob(i+1,clob);
}
}catch(Exception e){
System.out.println(e.toString());
}
return ps;
}
}, new AbstractLobStreamingResultSetExtractor(){
@Override
protected void streamData(ResultSet rs) throws SQLException,
IOException, DataAccessException {
ResultSetTrans.resultSetToList(rs,list);
}});
}catch (Exception ex) {
ex.printStackTrace();
logger.error(ex.getMessage());
}
return list;
}
//ResultSet转ListMap
public static void resultSetToList(ResultSet rs,List list) throws java.sql.SQLException {
if (rs == null){
list = Collections.EMPTY_LIST;
return;
}
ResultSetMetaData md = rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
int columnCount = md.getColumnCount(); //返回此 ResultSet 对象中的列数
Map rowData = new HashMap();
if(rs.isFirst()){
do {
rowData = new HashMap(columnCount);
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
} while (rs.next());
}
}