分页模糊查询中遇到的几个问题
- 查询信息该如何保存
- 分页查询条件如何书写
1、查询信息该如何保存
1.1、用类保存
查询信息无非是,Integer类型的,String 类型的再者Date类型的(这种暂时没用),于是乎我们可以创建一个工具类来保存这些信息,借鉴了Page Helper的命名,我们不妨叫他LikeHelper(like对应模糊查询)
LikeHelper: 这个类应当具有常用来的查询类型,空的构造方法,以及get,set方法,就如同你的实体类一样
import java.util.Date;
/**
* 用于模糊查询时,保存查询信息
*/
public class LikeHelper {
String name; //名字
Integer type; //类型
String phone; //手机号
Date time; //时间类型
public LikeHelper() {
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "LikeHelper{" +
"name='" + name + '\'' +
", type=" + type +
", phone='" + phone + '\'' +
", time=" + time +
'}';
}
}
其中我写了两个String类型,你可以根据查询需求,规定其属性(当然越少越好)
1.2、在controller里面写入查询信息
//将查询信息写入LikeHelper中
LikeHelper likeHelper = new LikeHelper();
likeHelper.setName(nurseName);
likeHelper.setType(nurseTitle);
model.addAttribute("likeHelper",likeHelper);
这样你就可以在前端获取你的查询信息,而不用担心分页之后点击下一页丢失你的查询信息
2、分页查询条件如何书写
在前端页面中书写查询条件
<a href="${pageContext.request.contextPath}/medicalManager/queryLikeNameAndTitle?pageNum=1&nurseName=${likeHelper.name}&nurseTitle=${likeHelper.type}">首页</a>
这里给出分页中首页的查询:
1.很明显这个为你的controller路径,其中应该是调用的模糊查询方法
${pageContext.request.contextPath}/medicalManager/queryLikeNameAndTitle
2.pageNum:传给PageHelper的参数,意思是当前第几页;
3.后面的一串就是你要查询的条件,这里通过el表达式取出
nurseName=${likeHelper.name}&nurseTitle=${likeHelper.type}
3、这样写的好处
如果我们是查询所有信息,那么我们并没有向LikeHelper里面写入信息,所以分页那块也就获取不到查询条件,会查询所有信息
但是当我们加入查询条件时,查询信息也就写入了LikeHelper,这时分页那块儿就获取到了查询条件,按查询条件查询,并且在查询返回后,点击第二页并不会损失查询信息