您的位置:首页 > 编程语言 > Java开发

jqGrid分页技术学习(九)spring jdbc多单条件组合查询

2011-03-29 07:29 791 查看
TablePagingController对多条件组合查询的判断:

......
if (search) {// _search:true
// filters:{"groupOp":"AND","rules":[{"field":"id","op":"ne","data":"5"},{"field":"amount","op":"gt","data":"100"}]}
String filters = request.getParameter("filters");
if (filters != null && filters.length() > 0) {
logger.info("Res-Host request filters=[" + filters + "]");
final JQGridPTO<InvHeader> pto = this.getDao()
.queryByMultiCondition(page, rows, sidx, sord,
filters);
model.put("JSON_OBJECT", pto);
......


TablePagingDao对多条件组合查询的处理:

/**
* 多条件表单查询
*
* @param pageNo
* @param pageSize
* @param sidx
* @param sord
* @return
*/
public JQGridPTO<InvHeader> queryByMultiCondition(final int pageNo,
final int pageSize, final String sidx, final String sord,
final String filters)
{
List<Criterion> criteria = Collections.emptyList();
criteria = new ArrayList<Criterion>();
// 通过searchField、searchString、searchOper生成通用的查询条件
CriterionUtil util = new CriterionUtil();
criteria.addAll(util.generateSearchCriteriaFromFilters(filters));
final String conditionSql = Criterion.convertToSql(criteria);
logger.info("Condition SQL: [" + conditionSql + "]");
final Object[] array = new Object[criteria.size()];
for (int i = 0; i < criteria.size(); i++) {
Criterion c = criteria.get(i);
logger.info("Criteria value: [" + c.getValue() + "]");
array[i] = c.getValue();
}
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
PaginationHelper<InvHeader> ph = new PaginationHelper<InvHeader>();
final String countSql = "SELECT count(*) FROM invheader" + " WHERE "
+ conditionSql;
final String seaechSql = "SELECT id, invdate, client_id, amount, tax, total, closed, ship_via, note"
+ " FROM invheader"
+ " WHERE "
+ conditionSql
+ " ORDER BY "
+ sidx + " " + sord;
return ph.fetchPage(jdbcTemplate, countSql, seaechSql, array, pageNo,
pageSize, new ParameterizedRowMapper<InvHeader>()
{
public InvHeader mapRow(ResultSet rs, int i)
throws SQLException
{
InvHeader data = new InvHeader();
data.setId(rs.getInt(1));
data.setInvdate(rs.getString(2));
data.setClient_id(rs.getInt(3));
data.setAmount(rs.getFloat(4));
data.setTax(rs.getFloat(5));
data.setTotal(rs.getFloat(6));
data.setClosed(rs.getString(7));
data.setShip_via(rs.getString(8));
data.setNote(rs.getString(9));
return data;
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐