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;
}
}
