package com.softeem.jdbcpro;
import java.util.List;
/**
* DTO
* 通用分页工具类
* @author mrchai
*/
public class PageUtils {
private int currentPage; //当前页
private int pageSize; //每页大小
private String tableName; //表名称
private String selections; //查询列
private String condition; //查询条件
private String sortColumn; //排序列
private String sortType; //排序类型 asc desc
private int totalNum; //总记录数
private int totalPage; //总页码数
private List<Object[]> datas; //当前页数据
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getSelections() {
return selections;
}
public void setSelections(String selections) {
this.selections = selections;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String getSortColumn() {
return sortColumn;
}
public void setSortColumn(String sortColumn) {
this.sortColumn = sortColumn;
}
public String getSortType() {
return sortType;
}
public void setSortType(String sortType) {
this.sortType = sortType;
}
public int getTotalNum() {
return totalNum;
}
public void setTotalNum(int totalNum) {
this.totalNum = totalNum;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<Object[]> getDatas() {
return datas;
}
public void setDatas(List<Object[]> datas) {
this.datas = datas;
}
}
package com.softeem.jdbcpro;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.softeem.utils.BaseConn;
public class ProcedureDemo extends BaseConn{ //继承已经封装的JDBC工具(获取一个Connection对象)
public void proc01() throws SQLException{
//根据存储过程调用命令获取预处理对象
CallableStatement cs = getConn().prepareCall("{call query_top10()}");
ResultSet rs = cs.executeQuery();
while(rs.next()){
int num = rs.getInt("num");
String name = rs.getString("name");
System.out.println(num+"---"+name);
}
}
public PageUtils procPaging(PageUtils pu) throws SQLException{
CallableStatement cs = getConn().prepareCall("{call sp_paging(?,?,?,?,?,?,?,?,?)}");
cs.setInt(1, pu.getCurrentPage());
cs.setInt(2, pu.getPageSize());
cs.setString(3, pu.getTableName());
cs.setString(4, pu.getSelections());
cs.setString(5, pu.getCondition());
cs.setString(6, pu.getSortColumn());
cs.setString(7, pu.getSortType());
//注册输出参数
cs.registerOutParameter(8, java.sql.Types.INTEGER);
cs.registerOutParameter(9, java.sql.Types.INTEGER);
//执行存储过程
cs.execute();
//获取制定位置的输出参数值
int totalNum = cs.getInt(8);
int totalPage = cs.getInt(9);
pu.setTotalNum(totalNum);
pu.setTotalPage(totalPage);
//声明用于存储查询结果的集合
List<Object[]> datas = new ArrayList<>();
//获取查询的结果集
ResultSet rs = cs.getResultSet();
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
while(rs.next()){
Object[] obj = new Object[count];
for(int i = 0;i<count;i++){
//获取标签名称(可能是列名称)
String label = rsmd.getColumnLabel(i+1);
Object c = rs.getObject(label);
obj[i] = c;
}
datas.add(obj);
}
//将查询结果设置到PageUtils中
pu.setDatas(datas);
return pu;
}
public static void main(String[] args) throws SQLException { //测试任意数据表
PageUtils pu = new PageUtils();
pu.setCurrentPage(1);
pu.setPageSize(100);
pu.setTableName("product");
// pu.setSelections("pname");
pu.setCondition("id");
pu.setSortColumn("total");
pu.setSortType("ASC");
pu = new ProcedureDemo().procPaging(pu);
for (Object[] obj : pu.getDatas()) {//打印
for (int i = 0; i < obj.length; i++) {
System.out.print(obj[i]+" ");
}
System.out.println();
}
}
}
JDBC存储过程的通用分页
最新推荐文章于 2024-07-28 19:41:52 发布