Mybatis和MybatisPlus使用分页插件

Mybatis分页

  • 安装Pagehelper插件
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelper-spring-boot-starterartifactId>
        <version>1.4.2version>
    dependency>
  • 分页查询
   public PageBean selectByPage(String name, Integer gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize) {
    PageHelper.startPage(page, pageSize);
    // 执行分页查询
    List<Emp> empList = empMapper.selectEmps(name,gender,begin,end);
    // 获取分页结果
    Page<Emp> p = (Page<Emp>) empList;
    //封装PageBean
    PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
    return pageBean;
}

MybatisPlus分页

  • 设置配置类
@Configuration
public class MybatisConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //初始化核心插件
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
        //添加分页插件
        PaginationInnerInterceptor paginationInnerInterceptor=new PaginationInnerInterceptor(DbType.MYSQL);
        //设置分页上线
        paginationInnerInterceptor.setMaxLimit(1000L);
        //添加插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }
}

  • 分页查询
    @Override
    public void page(EmployeePageQueryDTO employeePageQueryDTO){
    	//初始化
        Page<Employee> page=new Page<>(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
        //设置where
        LambdaQueryWrapper<Employee> lambdaQueryWrapper=new LambdaQueryWrapper<>();
        lambdaQueryWrapper.like(StringUtils.hasLength(employeePageQueryDTO.getName()),
                Employee::getName,employeePageQueryDTO.getName());
        lambdaQueryWrapper.orderByDesc(Employee::getUpdateTime);
        lambdaQueryWrapper.orderByAsc(Employee::getCreateTime);
        //查询
        employeeMapper.selectPage(page,lambdaQueryWrapper);
        System.out.println(page.getTotal());
        System.out.println(page.getRecords());
    }
  • MybatisPlus多表分页查询
    MybatisPlus对单表查询地支持较为丰富,但对多表操作的支持比较少,建议直接使用Mybatis的方式去实现多表操作。
    1. Service的实现
        @Override
    public PageResult page(DishPageQueryDTO dishPageQueryDTO) {
        Page<DishVO> page=new Page<>(dishPageQueryDTO.getPage(),dishPageQueryDTO.getPageSize());
        //分页查询
        dishMapper.selectDishPage(page,dishPageQueryDTO);
        return new PageResult(page.getTotal(),page.getRecords());
    }
    
    1. Mapper的实现
     Page<DishVO> selectDishPage(Page<DishVO> page, DishPageQueryDTO dishPageQueryDTO);
    
    1. Mapper.xml的实现
    
    <select id="selectDishPage" resultType="com.sky.vo.DishVO">
        select dish.id as id,dish.name as name,dish.price as price,
               dish.image as image,dish.description as description,
               dish.status as status,dish.update_time as updateTime,
               category.name as categoryName
        from dish join  category on dish.category_id=category.id
        <where>
            <if test="dishPageQueryDTO.name!=null">dish.name like concat('%',#{dishPageQueryDTO.name},'%')if>
            <if test="dishPageQueryDTO.categoryId!=null">dish.category_id=#{dishPageQueryDTO.categoryId}if>
            <if test="dishPageQueryDTO.status!=null">status=#{dishPageQueryDTO.status}if>
        where>
    select>
    

你可能感兴趣的:(Java,mybatis)