青橙项目-分页条件查询

Simonshr / 2023-08-17 / 原文

分页条件查询

一定要注意看清楚传参,和返回值类型!!!

遇到的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);
     }
 }