四步教你SpringBoot+Mybatis-plus分頁插件(簡單實現)


MyBatis-Plus 分頁插件---四步走

第一步:編寫分頁插件配置類

//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.itheima.mapper")
public class MyBatisPlusConfig {
    /**
     * 分頁插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        //你的最大單頁限制數量,默認 500 條,小於 0 如 -1 不受限制
        //paginationInterceptor.setLimit(2);
        return paginationInterceptor;
    }
}

第二步:編寫Dao層代碼

  • Mapper接口
public interface SsCompanyMapper extends BaseMapper<SsCompany> {//可以繼承或者不繼承BaseMapper
    /**
     * <p>
     * 查詢 : 根據state狀態查詢用戶列表,分頁顯示
     * 注意!!: 如果入參是有多個,需要加注解指定參數名才能在xml中取值
     * </p>
     *
     * @param page 分頁對象,xml中可以從里面進行取值,傳遞參數 Page 即自動分頁,必須放在第一位(你可以繼承	    * Page實現自己的分頁對象)
     * @param state 狀態,可以作為查詢條件,可以不加
     * @return 分頁對象
     */
    //IPage<User> selectPageVo(Page page, @Param("state") Integer state);
    IPage<SsCompany> selectPage(Page page);
}
  • Mapper.xml 等同於編寫一個普通 list 查詢,mybatis-plus 自動替你分頁
  <select id="selectPage" resultType="com.itheima.domain.SsCompany">
      select * from ss_company
  </select>

注意:加不加where取決於你是否攜帶查詢條件

第三步:調用分頁方法

  • 接口
public interface SsCompanyService {
    IPage<SsCompany> selectPage(Page<SsCompany> page);
}
  • 實現類
@Service
@Transactional
public class SsCompanyServiceImpl implements SsCompanyService {

    @Autowired
    private SsCompanyMapper ssCompanyMapper;

    @Override
    public IPage<SsCompany> selectPage(Page<SsCompany> page) {
        // 不進行 count sql 優化,解決 MP 無法自動優化 SQL 問題,這時候你需要自己查詢 count 部分
        // page.setOptimizeCountSql(false);
        // 當 total 為小於 0 或者設置 setSearchCount(false) 分頁插件不會進行 count 查詢
        // 要點!! 分頁返回的對象與傳入的對象是同一個
        return ssCompanyMapper.selectPage(page);
    }
}

第四步:編寫Controller

@RestController
@RequestMapping("/company")
public class SsCompanyController {

    @Autowired
    private SsCompanyService ssCompanyService;

    @RequestMapping("/list")
    public IPage<SsCompany> list() {
        /**
         * Page(current,size)
         * current:當前頁,long類型
         * size:每頁顯示的數量,long類型
         * 可參考其構造方法
         */
        IPage<SsCompany> iPage = ssCompanyService.selectPage(new Page<>(2l,3));
        return iPage;
    }
}


免責聲明!

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



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