在这里总结使用Mybatis注解时的两种分页方法:根据sql语句进行分页 和 查询所有数据的结合,在集合中进行分页。
1、根据sql语句进行分页
- controller
@GetMapping("/")
public @ResponseBody String getList(@RequestParam Map<String, Object> params){
//当前页
int page = Integer.valueOf((String)params.get("page"));
//每页显示的条目
int limit = Integer.valueOf((String)params.get("limit"));
//总数量
int count = empService.getCount();
int page_temp = page;
int limit_temp = limit;
//如果剩余的不够当前页显示的,就显示剩余的条目
if (count < page * limit) {
limit = count - (page - 1) * limit;
}
page = (page_temp - 1) * limit_temp;
List<Employee> list = empService.getEmployeeByPage(page,limit);
String jso = "{\"code\":0,\"msg\":\"\",\"count\":"+count+",\"data\":"+JSONArray.toJSONString(list)+"}";
return jso;
}
- service
//获取总数
public int getCount(){
return empMapper.getCount();
}
//分页查询
public List<Employee> getEmployeeByPage(int currentIndex,int pageSize){
return empMapper.queryEmployeeByPage(currentIndex,pageSize);
}
- mapper
//查询总数
@Select("select count(*) from employee")
int getCount();
//分页查询语句
@Select("select * from employee limit #{currentIndex} , #{pageSize}")
List<Employee> queryEmployeeByPage(@Param("currentIndex")int currentIndex, @Param("pageSize")int pageSize);
2、在集合中进行分页
- controller
@GetMapping("/")
public @ResponseBody String getList(@RequestParam Map<String, Object> params){
//当前页
int page = Integer.valueOf((String)params.get("page"));
//每页显示的条目
int limit = Integer.valueOf((String)params.get("limit"));
/*
* 以数组进行分页
* */
//总条目数量
int count = empService.getCountByParams();
//总条目的集合
List<Employee> list = empService.getEmployeeListByParams();
//从第几条数据开始
int firstIndex = (page - 1) * limit;
//到第几条数据结束
int lastIndex = page * limit;
//如果lastIndex>count
if(lastIndex>count){
lastIndex = count;
}
list = list.subList(firstIndex, lastIndex); //直接在list中截取
String jso = "{\"code\":0,\"msg\":\"\",\"count\":"+count+",\"data\":"+JSONArray.toJSONString(list)+"}";
return jso;
}
- service
//条件查询
public List<Employee> getEmployeeListByParams(){
return empMapper.queryEmployeeListByParams();
}
//条件查询总数
public int getCountByParams(){
return empMapper.queryCountByParams();
}
- mapper
//查询所有
@Select("select * from employee")
List<Employee> queryEmployeeListByParams();
//查询总数
@Select("select count(*) from employee")
int queryCountByParams();