项目延续使用知识点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对于查询做了一个封装,但是我在强调一遍,封装的功能并不是100%满足我们的开发需求,是一种可供选择的东西,不是一定要用,后面也会介绍如何自己写查询
到此本篇知识点讲解结束,此外 本次整体讲解的spring boot项目已上传github