项目延续使用知识点4,本篇目的为大家介绍spring boot的条件查询

第一步:在list页面合适的地方添加一个查询用的表单,并设置查询条件,在此我们使用名字与出生日期为条件,并注意查询对的条件是需要回写的

<form action="../user/list" method="post">
    名称:<input type="text" name="name" value="${user.name!""}"/>
    出生日期:<input type="date" name="brith"  value='<#if user.brith??>${user.brith?string("yyyy-MM-dd")}</#if>'/>
    <button>搜索</button>
</form>

第二步:完善列表控制器,我们在知识点1写列表的时候就在形参中预备了承载查询条件的user参数,框架会为我们自动封装,我们只需要调用相应的名字和日期数据就行,而我一直都在说spring boot是一个强封装的框架,并且在知识点2中我说过,它将无实际业务的代码也进行了封装,同理对于查询,spring boot同样提供了查询条件的封装,底层是where的sql语句,但是在使用上也不是万能的大家酌情使用

/**
 * 出列表
 * @param request
 * @param current
 * @param size
 * @param user
 * @return
 */
@RequestMapping("/list")
public String list(HttpServletRequest request, @RequestParam(defaultValue = "1") long current, @RequestParam(defaultValue = "3") long size, User user){
    //创建分页对象
    Page<User> page =new Page<>(current,size);
    //创建查询条件对象
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    //spring boot将条件查询封装成了一个对象,可以使用
    if(user!=null){
        if(user.getName()!=null && !"".equals(user.getName().trim())){
            wrapper.like("name",user.getName());
        }
        if(user.getBrith()!=null){
            wrapper.eq("brith",user.getBrith());
        }
    }
    //执行分页查询
    IPage<User> pageInfo = userService.page(page, wrapper);
    //单独存储总页数,最所以怎么做是因为现在市场上用的JDK和mybatis-plus版本有点不符合,总页数无法封装到前台
    request.setAttribute("pages",pageInfo.getPages());
    //存储到request中
    request.setAttribute("pageInfo",pageInfo);
    request.setAttribute("user",user);
    return "/user_list";
}

运行看效果即可

三层架构登录 三层架构查询功能_spring boot


最后留一个思考问题,条件查询的数据不可能只有一页,怎么样在前端分页代码中实现条件的保持,这点留给大家自己思考解决

本篇中只是简单的单表查询,主要目的是突出spring boot对于查询做了一个封装,但是我在强调一遍,封装的功能并不是100%满足我们的开发需求,是一种可供选择的东西,不是一定要用,后面也会介绍如何自己写查询

到此本篇知识点讲解结束,此外 本次整体讲解的spring boot项目已上传github