Springboot2+bootstrap-table1.12.1+MybatisPlus3.0 后台物理分页实现
分页可以说是使用最广的功能。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格式返回。
最后看看效果:
后台打印的信息: