Authored by qinchao

sql查询增加分页

... ... @@ -19,5 +19,7 @@ public class SqlOperateModel {
private String dataSourcePwd;
//查询内容
private String queryContent;
//分页:当前页索引,从0开始
private int currentPage;
}
... ...
... ... @@ -124,14 +124,17 @@ public class SqlOperateServiceImpl implements SqlOperateService {
BaseResponse res=null;
Map<String,Object> rtnList=new HashMap<String,Object>();
String queryDescr="";
String hasNext="no";//分页,是否存在下一页
boolean showSeqNOColumn=false;
String seqNOColumnName="_seqno_column_numberIndex";
String sql = sqlOperateModel.getQueryContent();
if(sql.endsWith(";")){
sql = sql.substring(0,sql.length()-1);
}
boolean descOrShowFlag=false;
/*boolean descOrShowFlag=false;
if(sql.toLowerCase().startsWith("desc ")||sql.toLowerCase().startsWith("show ")){
descOrShowFlag=true;
}
}*/
log.info("query4Table begin "+sql);
... ... @@ -160,12 +163,14 @@ public class SqlOperateServiceImpl implements SqlOperateService {
st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
st.setFetchSize(FETCH_COUNT_FROM_MYSQL);
//不是desc的查询需要限定数量了
if(!descOrShowFlag){
st.setMaxRows(FETCH_COUNT_FROM_MYSQL);
}
//前台有了分页,不再需要设定desc的限定数量
//if(!descOrShowFlag){
st.setMaxRows(MAX_QUERY_RESULT_COUNT*sqlOperateModel.getCurrentPage() +FETCH_COUNT_FROM_MYSQL);
// }
//st.setMaxRows(FETCH_COUNT_FROM_MYSQL);
rs = st.executeQuery(sql);
rs.beforeFirst();
rs.relative(MAX_QUERY_RESULT_COUNT*sqlOperateModel.getCurrentPage());
JSONArray ja_column=new JSONArray();
JSONArray ja_data=new JSONArray();
List<String> colNameList=new ArrayList<String>();
... ... @@ -207,11 +212,19 @@ public class SqlOperateServiceImpl implements SqlOperateService {
jo_header.put("field",rsmd.getColumnName(i));
ja_column.add(jo_header);
}
if(showSeqNOColumn){
JSONObject jo_header=new JSONObject();
jo_header.put("title","序号");
jo_header.put("field",seqNOColumnName);
jo_header.put("width","60px");
ja_column.add(0,jo_header);
}
while (rs.next()) {
times++;
if(!descOrShowFlag&&times>MAX_QUERY_RESULT_COUNT){
queryDescr="数据量超过limit限制,自动显示前"+MAX_QUERY_RESULT_COUNT+"条";
//if(!descOrShowFlag&&times>MAX_QUERY_RESULT_COUNT){
if(times>MAX_QUERY_RESULT_COUNT){
queryDescr="数据量超过限制,本页只显示"+MAX_QUERY_RESULT_COUNT+"条";
hasNext="yes";
break;
}
count++;
... ... @@ -242,6 +255,9 @@ public class SqlOperateServiceImpl implements SqlOperateService {
}
jo_body.put(colNameList.get(j-1),value == null ? "" :("<script type='text/html' style='display:block'>"+String.valueOf(value)+"</script>"));
}
if(showSeqNOColumn){
jo_body.put(seqNOColumnName,times);
}
ja_data.add(jo_body);
... ... @@ -288,8 +304,9 @@ public class SqlOperateServiceImpl implements SqlOperateService {
log.error("sqlOperateServiceImpl query4Table sqlOperateLogs insert异常:[" + sqlOperateModel.getQueryContent(), "sql=" + sql + "]", e);
}
}
rtnList.put("queryDescr", StringUtils.isBlank(queryDescr)?("共查询到"+count+"条数据"):queryDescr);
rtnList.put("queryDescr", StringUtils.isBlank(queryDescr)?("本页共查询到"+count+"条数据"):queryDescr);
rtnList.put("queryCount",count);
rtnList.put("hasNext",hasNext);
res=new BaseResponse();
res.setData(rtnList);
return res;
... ... @@ -304,7 +321,9 @@ public class SqlOperateServiceImpl implements SqlOperateService {
if(StringUtils.isBlank(sqlOperateModel.getDataSourcePwd())){
sqlOperateModel.setDataSourcePwd(DATA_SOURCE_PWD);
}
if(sqlOperateModel.getCurrentPage()<0){
sqlOperateModel.setCurrentPage(0);
}
}
... ...