引入依赖,提高效率,简化代码
<!--mybatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
控制层,接受数据
@GetMapping("/page")
public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO){
log.warn("{}", dishPageQueryDTO);
return dishService.page(dishPageQueryDTO);
}
业务层,效验参数,处理业务
@Override //分页查询
public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO) {
//效验参数
String name = dishPageQueryDTO.getName();
Integer status = dishPageQueryDTO.getStatus();
Integer categoryId = dishPageQueryDTO.getCategoryId();
int page = dishPageQueryDTO.getPage();
int pageSize = dishPageQueryDTO.getPageSize();
if (page <= 0 || pageSize <= 0) {
throw new ArgsErrorException(MessageConstant.ARGS_ERROR);
}
//处理业务
PageHelper.startPage(page, pageSize);
Page<DishVO> vos = dishMapper.page(name, status, categoryId);
PageResult pageResult = new PageResult(vos.getTotal(), vos.getResult());
//封装数据
return Result.success(pageResult);
}
持久层,与数据库交互
Page<DishVO> page(String name, Integer status, Integer categoryId);
在xml文件中写查询语句,利用动态sql进行查询,最后进行排序
<select id="page" resultType="com.sky.vo.DishVO">
select d.*,c.name categoryName
from
dish d, category c where d.category_id=c.id
<if test="name != null and name != ''">
and d.name like concat('%',#{name},'%')
</if>
<if test="status != null and status != ''">
and d.status =#{status}
</if>
<if test="categoryId != null and categoryId != ''">
and d.category_id =#{categoryId}
</if>
order by d.update_time desc
</select>