Mybatis-Plus 分頁示例


Mybatis-Plus 分頁通常我們使用 PageHelper、IPage。PageHelper,以往的博客中有使用到,今天我們來使用 Ipage 做一個基礎的分頁示例。(Spring Boot+MybatisPlus)

1. 首先導入需要的Jar包

<dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.0.5</version>
</dependency>

2. 使用IPage需要注入一個bean攔截器交給spring進行管理

注: 3.4.0 及版本對此部分有更新,同時idea會提示PaginationInterceptor過時,新版本改用了MybatisPlusInterceptor

@Configuration
@MapperScan("com.feifeiye.mapper") // 掃描mapper接口
public class Config {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

3. Mapper 層

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

4. 接口 AND 實現

接口:

public interface UserService extends IService<User> {

    IPage<User> findPage(Page<User> pageParam, UserQuery userQuery);
}

實現類:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    /**
     * 條件分頁查詢
     */
    @Override
    public IPage<User> findPage(Page<User> pageParam, UserQuery userQuery) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        /*非空則加入條件*/
        if (!StringUtils.isEmpty(userQuery.getName())) {
            queryWrapper.like("name", userQuery.getName());
        }
        if (!StringUtils.isEmpty(userQuery.getPhone())){
            queryWrapper.like("phone", userQuery.getPhone());
        }
        if (!StringUtils.isEmpty(userQuery.getStatus())){
            queryWrapper.eq("status", userQuery.getStatus());
        }
        IPage<User> userPage = baseMapper.selectPage(pageParam, queryWrapper);
        return userPage;
    }
}

5. Controller 層

注: UserQuery 為查詢對象,可根據實際業務編寫,或直接傳入需要查詢的參數。

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     *  分頁講師條件查詢
     */
    @GetMapping("{page}/{limit}")
    public IPage<User> findPage(
                           @PathVariable(value = "page") Long page,
                           @PathVariable(value = "limit") Long limit,
                           UserQuery userQuery)
    {
        Page<User> pageParam = new Page<User>(page, limit);
        IPage<User> pageResult=userService.findPage(pageParam, userQuery);
        return pageResult;
    }

}

編寫不易,如果對您有幫助,點贊,收藏,評論 三連支持下博主就是對博主最大的鼓勵~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM