P6分页处理

1:入参数据封装(看个人喜好
自己定义一个数据类型封装页面数据

package com.zzl.mystoreroom.common;

import lombok.Data;

@Data
public class QueryPageParam {
    //默认值
    private static int PAGE_SIZE=20;
    private static int PAGE_NUM=1;
    private int pageSize=PAGE_SIZE;
    private int pageNum=PAGE_NUM;
	
	private HashMap param;
}

 @PostMapping("/listPage1")
    public List listPage(@RequestBody HashMap map) {

        System.out.println(map);
        System.out.println("num==="+(String) map.get("pageSize"));
        System.out.println("size==="+(String) map.get("pageNum"));
        return null;
    }

自己定义数据类型


    @PostMapping("/listPage")
    public List listPage(@RequestBody QueryPageParam param) {
        System.out.println(param);
        System.out.println("num==="+param.getPageNum());
        System.out.println("size==="+param.getPageSize());
        return null;
    }

自动导包

mybatis支持springboot的拦截器配置

@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

查询及条记录,total是对的,为什么返回数据只有2条?因为我们的请求体里面写的pageSize=2使用默认一页只有2条,改大点就行了,全部显示
相当于size觉得一页有多少数据,num决定选择第几页

@PostMapping("/listPage")
    public List listPage(@RequestBody QueryPageParam query) {
//        System.out.println(query);
//        System.out.println("num==="+query.getPageNum());
//        System.out.println("size==="+query.getPageSize());
        HashMap param = query.getParam();
//        System.out.println("name==="+(String)param.get("name"));
//        System.out.println("no==="+(String)param.get("no"));
        Page page = new Page();
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());

        String name = (String)param.get("name");
        LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.like(User::getName,name);

        IPage result = userService.page(page,lambdaQueryWrapper);

        System.out.println("total=="+result.getTotal());

        return result.getRecords();
    }

如果我们想要自己的分页测量,查询方法
路径定义为listpagec
然后去userservice定义函数
然后去userserviceimpl实现这个方法(alt+enter先导入(implement methods)
因为我们的返回类型依赖usermapper,所以注入usermapper
然后去mapper声明这个方法
最后去xml写出这个方法。当然最好就是不用自己写xml,不然太麻烦了

userserviceimpl.java

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public IPage pageC(Page page) {
        return null;
    }
}
@PostMapping("/listPageC")
    public List listPageC(@RequestBody QueryPageParam query) {
        HashMap param = query.getParam();
        Page page = new Page();
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());
        String name = (String)param.get("name");

//        LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper.like(User::getName,name);

        IPage result = userService.pageC(page);

        System.out.println("total=="+result.getTotal());

        return result.getRecords();
    }
 

自己写sql非常麻烦,可以借助wrapper自定义sql
可以查官网
使用wrapper自定义sql

搞了半天运行错误,查了一下好像是依赖冲突,看源文件pom对照
删掉






所以以后直接修改wrapper,然后还是用mybatisplus自带的方法
写条件查询的sql

你可能感兴趣的:(spring,boot,后端,java)