import java.util.List;
import java.util.Map;
/**
* 数据库查询工具类.
*
*/
public class QueryTool {
/**
* Checks if is condition.
*
* @param obj the obj
* @return true, if is condition
*/
public static boolean isCondition(Object obj) {
if ("".equals(getString(obj)))
return false;
else
return true;
}
/**
* Gets the string from Object,null值转换为空字符串.
*
* @param obj the obj
* @return the string
*/
public static String getString(Object obj) {
return obj != null ? obj.toString() : "";
}
/**
* 拼接sql in条件.
*
* @param columnKey the column key
* @param columnValueList the column value list
* @param joinOp the join op
* @param sb the sb
*/
public static void appendConditionIn(String columnKey, List
String joinOp, StringBuffer sb) {
if (QueryTool.isCondition(columnValueList)) {
sb.append(" " + joinOp + " " + columnKey + " in " + QueryTool.listToSqlIn(columnValueList));
}
}
/**
* 拼接sql 条件.
*
* @param columnKey the column key
* @param columnValue the column value
* @param joinOp the join op
* @param op the op
* @param sb the sb
* @param paramsList the params list
*/
public static void appendCondition(String columnKey, Object columnValue,
String joinOp, String op, StringBuffer sb, List
使用:
public Page findLoginRecordList(String machineCode,String pageIndex,String pagesize){
int pageIndexInt=Integer.valueOf(pageIndex);
int pagesizeInt=Integer.valueOf(pagesize);
List
StringBuffer s = new StringBuffer();
s.append("select t.certNo, t.CLIENT,t.TYPE, to_char(t.inouttime,'mm/dd hh24:mi:ss') as INOUTTIME from DC_LOGINRECORD t where 1=1 ");
QueryTool.appendCondition("t.machinecode",machineCode,"AND","=" ,s, paramsList);//拼接条件
s.append(" order by t.inouttime desc");
String sql = QueryTool.buildCountSql(s.toString()); //查询总数的sql
long totalSize = this.queryForInt(sql,paramsList.toArray(new Object[paramsList.size()])); //jdbc查询
if(totalSize > 0){
String sl = QueryTool.buildPageSql(s.toString(), pageIndexInt,pagesizeInt , paramsList);//拼接分页
List
备注:
分页的类:
import java.io.Serializable;
import java.util.ArrayList;
/**
* 分页对象. 包含数据及分页信息.
*/
public class Page implements Serializable {
static private int DEFAULT_PAGE_SIZE = 20;
/**
* 每页的记录数
*/
private int pageSize = DEFAULT_PAGE_SIZE;
/**
* 当前页第一条数据在List中的位置,从0开始
*/
private int start;
/**
* 当前页中存放的记录,类型一般为List
*/
private Object data;
/**
* 总记录数
*/
private long totalCount;
/**
* 构造方法,只构造空页
*/
public Page() {
this(0, 0, DEFAULT_PAGE_SIZE, new ArrayList());
}
/**
* 默认构造方法
*
* @param start
* 本页数据在数据库中的起始位置
* @param totalSize
* 数据库中总记录条数
* @param pageSize
* 本页容量
* @param data
* 本页包含的数据
*/
public Page(int start, long totalSize, int pageSize, Object data) {
this.pageSize = pageSize;
this.start = start;
this.totalCount = totalSize;
this.data = data;
}
/**
* 取数据库中包含的总记录数
*/
public long getTotalCount() {
return this.totalCount;
}
/**
* 取总页数
*/
public long getTotalPageCount() {
if (totalCount % pageSize == 0)
return totalCount / pageSize;
else
return totalCount / pageSize + 1;
}
/**
* 取每页数据容量
*/
public int getPageSize() {
return pageSize;
}
/**
* 当前页中的记录
*/
public Object getResult() {
return data;
}
/**
* 取当前页码,页码从1开始
*/
public int getCurrentPageNo() {
return start / pageSize + 1;
}
/**
* 是否有下一页
*/
public boolean hasNextPage() {
return this.getCurrentPageNo() < this.getTotalPageCount() - 1;
}
/**
* 是否有上一页
*/
public boolean hasPreviousPage() {
return this.getCurrentPageNo() > 1;
}
/**
* 获取任一页第一条数据的位置,每页条数使用默认值
*/
protected static int getStartOfPage(int pageNo) {
return getStartOfPage(pageNo, DEFAULT_PAGE_SIZE);
}
/**
* 获取任一页第一条数据的位置,startIndex从0开始
*/
public static int getStartOfPage(int pageNo, int pageSize) {
return (pageNo - 1) * pageSize;
}
}