Java-SQLServer查询分页

开发工具与关键技术:java
作者:张俊辉
撰写时间:2019年06月28日

因使用的是sqlServer的jar包连接sqlServer数据库,因此执行的便是SQLServer的分页代码,SQL代码如下:

select top (?) * from SYS_User tbUser join SYS_UserType tbUserType on tbUser.UserTypeID=tbUserType.UserTypeID where UserID!=1 and UserID not in (select top (?) UserID from SYS_User where UserID!=1) order by UserID desc;

第一个?代表查询多少条,第二个?代表从那条数据开始查询
由于需要查询数据的总条数因此还需要执行SQL查询总条数语句,代码如下:

select count(*) Count from SYS_User tbUser join SYS_UserType tbUserType on  tbUser.UserTypeID=tbUserType.UserTypeID where UserID!=1

然后封装一个类返回数据,包含:code,int类型,表示状态成功为0,msg,String类型表示提示信息,count,int类型表示总条数,data,List类型,储存分页后的数据,封装代码如下:

public class ReturnListJson<T> {
	private int code;
	private String msg;
	private int count;
	private List<T> data;
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public List<T> getData() {
		return data;
	}
	public void setData(List<T> data) {
		this.data = data;
	}
	public ReturnListJson(int code,String msg,int count,List<T> data){
		this.code=code;
		this.data=data;
		this.msg=msg;
		this.count=count;
	}
}

对于分页的方法步骤为:加载驱动-配置账号密码-获取连接-执行总条数查询-获取查询后的总条数-执行分页代码-遍历获取数据赋值到封装好的Po类中并把类添加到序列中-最后把数据赋值到封装好的返回类中。代码如下:

private String selectUser = "select top (?) * from SYS_User tbUser join SYS_UserType tbUserType on tbUser.UserTypeID=tbUserType.UserTypeID where UserID!=1 and UserID not in (select top (?) UserID from SYS_User where UserID!=1) order by UserID desc";
private String selectUserCount = "select count(*) Count from SYS_User tbUser join SYS_UserType tbUserType on  tbUser.UserTypeID=tbUserType.UserTypeID where UserID!=1";
@Override
public ReturnListJson<SelectUserVo> SelectUser(int page, int limit) {
	ReturnListJson<SelectUserVo> listJson = null;int count = 0;
	try {
		conn = DBUtil.getConnection();
		ps = conn.prepareStatement(selectUserCount);
		rs = ps.executeQuery();
		while (rs.next()) {
			count = rs.getInt("Count");
		}
		ps = conn.prepareStatement(selectUser);
		ps.setInt(1, limit);
		ps.setInt(2, (page - 1) * limit);
		rs = ps.executeQuery();
		List<SelectUserVo> listSelectUserVo = new ArrayList<SelectUserVo>();
		while (rs.next()) {
			SelectUserVo selectUserVo = new SelectUserVo();
			selectUserVo.setUserName(rs.getString("UserName"));
			selectUserVo.setUserNum(rs.getString("UserNum"));
			selectUserVo.setUserTypeID(rs.getInt("UserTypeID"));
			selectUserVo.setUserTypeName(rs.getString("UserTypeName"));
			selectUserVo.setUserID(rs.getInt("UserID"));
			selectUserVo.setState(rs.getBoolean("State"));
			listSelectUserVo.add(selectUserVo);
		}
		listJson = new ReturnListJson<SelectUserVo>(0, "", count, listSelectUserVo);
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		DBUtil.close(conn, ps, rs);
	}
	return listJson;
}

你可能感兴趣的:(技术总结)