您的位置:首页 > 其它

SSM框架下的分页查询显示

2017-02-27 16:42 232 查看
本次实例使用的是SSM框架,但是分页的原理都是一样的,所以便以这个框架下的分页方法为例。

首先:

分页查询时,在数据库(MySQL)中需要使用limit ?,?进行分页,2个参数分别为当前页码数,当前页面显示的条数,除此之外,我们还需要知道总记录数。

UserMapper.xml

<!--查询所有用户(分页)-->
<select id="findByPage" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
<include refid="Base_Column_List"/>
from user
<if test="pageIndex >= 0 and pageSize > 0">
limit #{pageIndex},#{pageSize}
</if>
</select>


<!--取得记录总数-->
<select id="getCount" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT
count(1) as count
from user
</select>


接下来编写dao层的接口

因为传入的参数里包含当前页码数和当前页面显示条数两个参数,所以这里使用map来存放。

UserDao.java

//分页查询所有数据
List<Map<String,Object>> findByPage(Map<String,Object> map);
//获得所有记录数
int getCount(Map<String,Object> map);


Service层的接口以及他的实现类ServiceImpl

在service层的时候在一个实现方法里面调用dao层的两个方法。

UserService.java

//分页查询
PageInfo<List<Map<String,Object>>> findByPage(Map<String,Object> params);


UserServiceImpl.java

@Override
public PageInfo<List<Map<String,Object>>> findByPage(Map<String, Object> params) {
PageInfo pageInfo = new PageInfo<>();
pageInfo.setPageSize((Integer)params.get("pageSize"));
//获取总记录数
pageInfo.setTotalCount(userMapper.getCount(params));          pageInfo.setPageCount(pageInfo.getPageCount(pageInfo.getTotalCount(),pageInfo.getPageSize()));
pageInfo.setPageIndex((int)params.get("pageIndex"));
params.put("pageInfo",pageInfo);
//获取查询到的结果集
List<Map<String,Object>> list = userMapper.findByPage(params);
if(list.size()>0){
pageInfo.setResults(list);
}else{
pageInfo.setResults(null);
}
return pageInfo;
}


Controller层的实现

这里的Controller继承了BaseController里面的方法,

BaseController.java

@RequestMapping(value = "list",method = RequestMethod.GET, produces = "application/json; charset=utf-8")
@ResponseBody
public String list(T params,HttpServletRequest request,HttpServletResponse response) {

String json="";
String temp1 = request.getParameter("pageIndex");
String temp2 = request.getParameter("pageSize");
try {
int pageSize = temp2 == null ? ConstantParams.PAGE_SIZE : Integer.parseInt(temp2);
int pageIndex = temp1 == null ? (ConstantParams.PAGE_INDEX - 1) * pageSize : (Integer.parseInt(temp1) - 1) * pageSize;
PageInfo<E> page = findPage(params,pageSize,pageIndex,request);
ObjectMapper mapper = new ObjectMapper();
json = mapper.writeValueAsString(page);
} catch (Exception e) {
e.printStackTrace();
}
return json;
}

//查询分页
PageInfo<List<Map<String,Object>>> findByPage(Map<String,Object> params);


UserController.java

@Override
protected PageInfo<List<Map<String,Object>>> findPage(User user, int pageSize, int pageIndex,HttpServletRequest request) {
Map<String,Object> map = BeanConvertUtils.beanConvertMap(user);
map.put("pageIndex",pageIndex);
map.put("pageSize",pageSize);
PageInfo<List<Map<String,Object>>> pageInfo = userService.findByPage(map);
return pageInfo;
}


以上就是分页查询的完整后台代码,至于前台的分页按钮,网上有较多现成的代码,这里就不做展示了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐