开发工具与关键技术: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;
}