青橙项目-分页条件查询
分页条件查询
一定要注意看清楚传参,和返回值类型!!!
遇到的bug,开始建了一个dto类将page,size,name,letter封装.结果导致前端页面只显示第一页,不能翻页.
后来发现是传的参数不对.
接口文档
-
请求URL
/brand/page
-
请求方式
POST
#参数一
?page=1&size=10 #参数二 { "name": "海", "letter": "H" }
-
响应数据
{ "total": 3, "rows": [{ "id": 7817, "name": "海尔", "image": "http://image.leyou.com/group1/M00/00/00/wKg4ZVrYZcyAVOzoAAB846UcmLg013.png", "letter": "H", "seq": null }, { "id": 7888, "name": "海信", "image": "", "letter": "H", "seq": null }, { "id": 276780, "name": "海语(HAIYU)", "image": "", "letter": "H", "seq": null }] }
xml层
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.itheima.mapper.BrandMapper" > <!--分页条件查询--> <select id="findByCondition" resultType="com.itheima.pojo.Brand"> select * from tb_brand <where> <if test="name !=null and name !=''"> and name like concat(#{name},'%') </if> <if test="letter !=null and letter !=''"> and letter like concat(#{letter},'%') </if> </where> </select> </mapper>
mapper层
@Mapper public interface BrandMapper { //分页条件查询 List<Brand> findByCondition(Brand brand); }
service层
public interface BrandService { //分页条件查询 PageResult<Brand> findPage(Integer page,Integer size,Brand brand); }
serviceImpl层
@Service public class BrandServiceImpl implements BrandService { @Autowired private BrandMapper brandMapper; //分页条件查询 @Override public PageResult<Brand> findPage(Integer page, Integer size, Brand brand) { PageHelper.startPage(page,size); List<Brand> brandList = brandMapper.findByCondition(brand); Page<Brand> p = (Page<Brand>) brandList; return new PageResult<>(p.getTotal(),p.getResult()); } }
controller层
@RestController public class BrandController { @Autowired private BrandService brandService; @Autowired private AliyunOssUitls aliyunOssUitls; /** * 分页条件查询 * * @param * @return */ @PostMapping("/brand/page") public PageResult<Brand> findByPage(@RequestParam("page") Integer page, @RequestParam("size")Integer size, @RequestBody Brand brand) { return brandService.findPage(page, size, brand); } }