1.需求分析
根据查询条件查询,并且能实现查询条件回显、翻页、跳转等功能。
2.分页查询
①前端请求
将查询条件用form表单套起来 并给表单赋予id 方便之后表单提交操作
<form action="${pageContext.request.contextPath}/stu/list/1/${stu.pageSize}" method="post" id="f1" >
<div class="layui-container">
<input type="text" id="no" name="name" value="${name}" class="layui-input" placeholder="学生姓名">
<select class="layui-input" name="class_id" id="class_id">
<option value="-1">--请选择班级--</option>
</select>
<button class="layui-btn" type="submit"><i class="layui-icon layui-icon-search">搜索</i></button>
</div>
</form>
翻页等功能的实现
<script>
function gopage1(pageIndex) { $("#f1").prop("action","${pageContext.request.contextPath}/stu/list/"+pageIndex+"/"+${stu.pageSize});
$("#f1").submit();
}
</script>
//翻页跳转需要获取表单的数据,因此需要提交表单
<a href="javascript:gopage1(1);" class="layui-laypage-prev " data-page="0">
②Service层的实现
查询数据总数
@Override
public int getTotalCount(String name,Integer class_id) {
//接口 匿名内部类 专门负责封装查询条件
Specification specification=new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) {
Predicate p1=cb.equal(root.get("del"),0);
Predicate p = cb.and(p1);
if(name!=null&&!"".equals(name)){
Predicate p2 = cb.like(root.get("name"), "%"+name+"%"); //模糊查询
p=cb.and(p2,p);
}
if(class_id!=null&&class_id!=-1) {
Predicate p3 = cb.equal(root.get("c").get("id"), class_id); //下拉框等值判断
p=cb.and(p3,p);
}
return p;
}
};
return Integer.parseInt(sd.count(specification)+"");
}
根据条件查询数据
@Override
public List<Student> getStuByPage(int pageIndex, int pageSize,String name,Integer class_id) {
//接口 匿名内部类 专门负责封装查询条件
Specification specification=new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) {
Predicate p1=cb.equal(root.get("del"),0);
Predicate p = cb.and(p1);
if(name!=null&&!"".equals(name)){
Predicate p2 = cb.like(root.get("name"), "%"+name+"%"); //模糊查询
p=cb.and(p2,p);
}
if(class_id!=null&&class_id!=-1) {
Predicate p3 = cb.equal(root.get("c").get("id"), class_id); //下拉框等值判断
p=cb.and(p3,p);
}
return p;
}
};
//排序规则
Sort.Order order1=new Sort.Order(Sort.Direction.ASC, "id"); // 按id降序
Sort sort = new Sort(order1); //Sort封装了排序规则
//分页条件对象
Pageable pageable=new PageRequest(pageIndex-1,pageSize,sort);
Page<Student> page= sd.findAll(specification, pageable);
//每页数据
List<Student> list = page.getContent();
return list;
}
③Controller控制层
/**
* 分页查询
*/
@RequestMapping("/list/{pageIndex}/{pageSize}")
public String studentlist(@PathVariable("pageIndex") int pageIndex, @PathVariable("pageSize") int pageSize,String name,Integer class_id, Model model){
System.out.println(name+"-------------"+class_id);
int totalCount = ss.getTotalCount(name,class_id);
List<Student> list = ss.getStuByPage(pageIndex,pageSize,name,class_id);
PageUtils<Student> page= new PageUtils<>(pageIndex,pageSize,list,totalCount);
model.addAttribute("stu",page);
model.addAttribute("name",name); //回显条件
model.addAttribute("class_id",class_id);//回显条件
return "studentList";
}