分页功能的完善
layui分页功能在实际使用过程中需要我们手动的去更改,以便达到分页的目的。
当我们点击按钮时,会给我们发送page和limit参数,我们需要在后端接收它们。
limit我们可以手动设置,也可以接收他传来的参数。
limits是分页的参数。
我们需要在后台接收数据:
@WebServlet("/SelectStaffSalary")
public class SelectStaffSalary extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pageStr=request.getParameter("page");
String limitStr=request.getParameter("limit");
try {
UserDaolmpl userDaolmpl=new UserDaolmpl();
List<Map<String, Object>> recordList = userDaolmpl.selectStaffSalary(pageStr,limitStr);
Map<String, Object> result = new HashMap<>();
result.put("code", 0); // 设置响应状态码,0 表示成功
result.put("msg", ""); // 设置响应消息,这里可以不设置
result.put("count",userDaolmpl.countNum()); // 设置数据总数
result.put("data", recordList); // 设置数据列表
Gson gson = new Gson();
String resultJson = gson.toJson(result);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(resultJson); // 将数据以 JSON 格式返回
} catch (ClassNotFoundException | SQLException e) {
throw new RuntimeException(e);
}
}
在selectStaffSalary方法里:
public List<Map<String, Object>> selectStaffSalary(String page, String limit) throws SQLException, ClassNotFoundException {
Connection connection= JDBCutil.setConnection();
String sql = "SELECT * FROM salary_staff limit ?,?";
PreparedStatement pstmt = connection.prepareStatement(sql);
int page1=Integer.parseInt(page);
int limit1=Integer.parseInt(limit);
//注意这里的逻辑,当limit为5时,当为第一页时,我们从0不包括0开始,显示5条数据,当为第二页时,我们从5开始不包括5,即从6开始显示5条数据
pstmt.setInt(1,(page1-1)*limit1);
pstmt.setInt(2,limit1);
ResultSet rs=pstmt.executeQuery();
List<Map<String, Object>> recordList = new ArrayList<>();
while (rs.next()) {
Map<String, Object> recordMap = new HashMap<>();
recordMap.put("id", rs.getInt("id"));
recordMap.put("number", rs.getString("number"));
recordMap.put("name", rs.getString("name"));
recordMap.put("age_salary", rs.getString("age_salary"));
recordMap.put("work_salary", rs.getString("work_salary"));
// 以此类推,将每个字段名和字段值存入Map
recordList.add(recordMap);
}
return recordList;
}
总结
就是把page和limit接收后,更改sql语句,查询所有数据的一段子集即可。