package org.nutz.dao.impl.sql.callback;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.nutz.dao.entity.Record;
import org.nutz.dao.pager.ResultSetLooping;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.sql.SqlCallback;
import org.nutz.dao.sql.SqlContext;
import org.nutz.lang.util.NutMap;
public class QueryMapCallback implements SqlCallback {
public final static SqlCallback me = new QueryMapCallback();
public Object invoke(Connection conn, ResultSet rs, Sql sql)
throws SQLException {
final ResultSetMetaData meta = rs.getMetaData();
// ResultSetLooping 封装了遍历结果集的方法,里面包含了针对sqlserver等浮标型分页的支持
ResultSetLooping ing = new ResultSetLooping() {
protected boolean createObject(int index,
ResultSet rs,
SqlContext context,
int rowCout) {
NutMap re = new NutMap();
Record.create(re, rs, meta);
list.add(re);
return true;
}
};
ing.doLoop(rs, sql.getContext());
return ing.getList();
}
}