本文介绍一下结合spring mvc和jquery datatable如何进行分页。
spring mvc 代码
@Controller
@RequestMapping("/appaccess")
public class AppAccessController {
@Autowired
private AppAccessService appAccessService;
@RequestMapping(value = "/getJsonData", produces = "text/plain;charset=utf-8")
@ResponseBody
public String getJsonData(@RequestParam(required = false) String keywords,
@RequestParam(required = false) Integer start,
@RequestParam(required = false) Integer length) {
Map<String, Object> maps = new HashMap<>();
PageRequest pagerequset = new PageRequest((start / length), length);
int totalCount = appAccessService.findListCount(keywords);
List<AppAccess> results = appAccessService.findList(keywords, pagerequset);
return JSON.toJSONString(results);
}
}
参数start和length:start参数表示数据的开始位置,length表示每页数据的数据量,例如点击第一页,那么start=0,length=25,点击第二页,start=25,length=25,这两个参数由jquery datatable传递到后端。
如果是基于spring data Pageable进行分页,那么必须计算pageno,也即是第几页。这个很简单,使用start/length即可得到。PageRequest是Pageable接口的实现类,我们可以构造PageRequest对象,利用该对象的api得到offset和pageSize
PageRequest pagerequset = new PageRequest((start / length), length));
mybatis 代码
<select id="findList" resultType="com.vip.admin.appaccess.entity.AppAccess">
select *
from app_access where 1 = 1
//省略部分代码
<if test="pageable.offset >= 0 and pageable.pageSize > 0" >
limit ${pageable.offset}, ${pageable.pageSize}
</if>
</select>
至于如何将后端json数据显示到前台,请结合我之前写的Jquery datatable jsonp 显示后台json数据这篇文章。