分頁可以說是使用最廣的功能。bootstap-table是一款很好用的grid開源免費插件。
MybatisPlus功能很強大,效率很高,本文用它們來實現記錄分頁的功能。
特別提示一下:bootstrap-table屬性定義中必須要有這句:
contentType:"application/x-www-form-urlencoded; charset=UTF-8", 不然后台不能接受到數據。
-------------------------------------------------------------------------------------------------------------------
bootstrap-table的網址:
http://bootstrap-table.wenzhixin.net.cn/zh-cn/
MybatisPlus的網址:
分頁原理:前台傳送頁碼(pageIndex)和每頁的記錄數(pageSize)到后台,后台用這兩個參數提取數據庫的相應記錄return給前台,另外后台每次要get數據庫的物理記錄總數return前台,前台根據記錄總數分配分頁的1、2、3等分頁按鈕以供用戶方便查詢。
好,Let's go!
先看一下程序的結構圖

1、首先創建一個MybatisPlus分頁的攔截器MybatisPlusConfig,如果不創建,MybatisPlus就不會在sql上增加分頁的語句。
@EnableTransactionManagement
@Configuration
@MapperScan("cn.jhxcom.web.demo.mapper")
public class MybatisPlusConfig {
/**
* 分頁插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2、建立UserPlusMapper:
public interface UserPlusMapper extends BaseMapper<User> {
}
哈哈,看着很簡單哈,但User已經具備了CURD的功能了;
3、建立UserPlusService 服務接口,以便Controller使用:
public interface UserPlusService {
public IPage<User> selectUserPage(PageParams params) ;
public long selectUserCount(PageParams params) ;
}
這里要注意的是selectUserPage返回的是MabatisPlus內置的IPage類,這里如果按照官方文檔寫要報錯。
4、建立UserPlusService的實現類:
@Service
public class UserPlusServiceImpl implements UserPlusService {
@Autowired
UserPlusMapper userPlusMapper ;
@Override
public IPage<User> selectUserPage(PageParams params) {
return userPlusMapper.selectPage(
new Page<User>(params.getPageIndex(),params.getPageSize()),
null
);
}
@Override
public long selectUserCount(PageParams params) {
return userPlusMapper.selectCount(null);
}
}
5、建立后台接收前台傳參的封裝類PageParams接收pageIndex和pageSize兩個參數。
好,臨門一腳就交給Controller吧:
6、Controller:
@PostMapping("getplus_tabledata")
public PageInfoResult<User> getTableData( PageParams pageParams ){
System.out.println(pageParams);
PageInfoResult<User> pir = new PageInfoResult<User>();
pir.setRows(userPlusService.selectUserPage(pageParams).getRecords());
pir.setTotal(userPlusService.selectUserCount(pageParams));
pir.setCode(0);
return pir ;
}
注:Controller類明上有@RestController ,所以數據是以json格式返回。
最后看看效果:

后台打印的信息:

