SSM-关于模糊查询中的一些问题(使用了PageHelper进行分页)

本文介绍了在JavaWeb应用中如何实现分页模糊查询,并保存查询条件。通过创建`LikeHelper`类存储查询信息,如姓名、类型和手机号。在Controller中设置查询条件,并在前端页面通过EL表达式传递。分页链接携带查询参数,确保翻页时不会丢失查询条件。这种方法确保了无查询条件时显示所有信息,有查询条件时则按条件分页展示。
摘要由CSDN通过智能技术生成

分页模糊查询中遇到的几个问题

 

  1. 查询信息该如何保存
  2. 分页查询条件如何书写

 

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,这时分页那块儿就获取到了查询条件,按查询条件查询,并且在查询返回后,点击第二页并不会损失查询信息

好的,我可以为您提供一个简单的示例代码,演示如何在SSM使用模糊查询分页查询来查询教师表。请参考下面的代码: 首先,在mapper接口定义一个方法,如下所示: ``` public interface TeacherMapper { List<Teacher> findTeachersByPage(@Param("name") String name, @Param("start") int start, @Param("pageSize") int pageSize); int countTeachers(@Param("name") String name); } ``` 然后,在mapper.xml文件实现该方法,如下所示: ``` <select id="findTeachersByPage" resultType="Teacher"> select * from teacher where name like CONCAT('%',#{name},'%') order by id limit #{start},#{pageSize} </select> <select id="countTeachers" resultType="int"> select count(*) from teacher where name like CONCAT('%',#{name},'%') </select> ``` 接下来,在service层调用mapper接口的方法,如下所示: ``` @Service public class TeacherServiceImpl implements TeacherService { @Autowired private TeacherMapper teacherMapper; @Override public PageInfo<Teacher> findTeachersByPage(String name, int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<Teacher> teachers = teacherMapper.findTeachersByPage(name, (pageNum - 1) * pageSize, pageSize); PageInfo<Teacher> pageInfo = new PageInfo<>(teachers); return pageInfo; } @Override public int countTeachers(String name) { return teacherMapper.countTeachers(name); } } ``` 最后,在controller层调用service层的方法,如下所示: ``` @RestController @RequestMapping("/teachers") public class TeacherController { @Autowired private TeacherService teacherService; @GetMapping public PageInfo<Teacher> findTeachersByPage(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) { return teacherService.findTeachersByPage(name, pageNum, pageSize); } @GetMapping("/count") public int countTeachers(@RequestParam(value = "name", required = false) String name) { return teacherService.countTeachers(name); } } ``` 这样,就可以通过模糊查询教师名对教师表进行分页查询了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值