通用Mapper进行分页查询
什么也不说,直接上代码解释。
1.1引入分页助手依赖和通用Mapper依赖
<dependency>
<!--通用Mapper依赖-->
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!--分页助手依赖->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
1.2DAO层
注意:不能导错依赖 import tk.mybatis.mapper.common.Mapper
import com.mayday.auth.pojo.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
public interface UserMapper extends Mapper<User> {
}
1.3Service层
/**
* 分页查询
*
* @param key 关键字查询
* @param page 页数
* @param size 每页数量
* @param desc 排序方式
* @param sortBy 需要排序的字段
* @param status 用户状态
* @return
*/
public PageResult<User> queryUserByPage(String key, int page, int size, Boolean desc, String sortBy, Boolean status) {
//分页
PageHelper.startPage(page, size);
//过滤
Example example = new Example(User.class);
if (status != null) {
example.setDistinct(status);
}
if (StringUtils.isNotBlank(key)) {
//过滤条件
example.createCriteria().orLike("username", "%" + key.toLowerCase() + "%").orEqualTo("phone",key.toLowerCase());
}
//根据相应的字段进行排序
if (StringUtils.isNotBlank(sortBy)) {
String orderByClause = sortBy + (desc ? " DESC" : " ASC");
example.setOrderByClause(orderByClause);
}
//查询
List<User> users = userMapper.selectByExample(example);
if (CollectionUtils.isEmpty(users)) {
return null;
}
users.stream().forEach(user -> user.setPassword(null));
//解析分页结果
PageInfo<User> info = new PageInfo<>(users);
return new PageResult<>(info.getTotal(), users);
}
1.4Controller层
/**
* 分页查询
* @param key
* @param page
* @param size
* @param desc
* @param sortBy
* @param status
* @return
*/
@GetMapping("/userList")
public Result queryUserByPage(@RequestParam(value = "key", required = false) String key,
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "rows", defaultValue = "5") Integer size,
@RequestParam(value = "desc", defaultValue = "false") Boolean desc,
@RequestParam(value = "sortBy", required = false) String sortBy,
@RequestParam(value = "status", required = false) Boolean status) {
PageResult<User> pageResult = userService.queryUserByPage(key, page, size, desc, sortBy, status);
if (pageResult == null) {
return new Result(false, StatusCode.QUERY_FAIL);
}
return new Result(true, StatusCode.OK, pageResult);
}