easyUI(五) -- 分析easyui+mysql实现分页

easyui 有内置的分页功能 , 它接收 [total,rows{}] 格式的 JSON 数据进行分页 。
首先 , 我们需要加上 pagination:true, 属性 , 它会在 easyui 的表格栏中加入分页栏 。 而我们选择的 pageList:[2,5,10,20] 就是我们分页的每一页的数据 。
从后台传过来的数据如果不经过处理 , 默认是{stuid:1,stuName:tom}这种格式 , 而easyui 分页需要传入 total 和 rows , 那我们怎么在后台处理的时候加上它们呢 ?
首先在 mapper 中写好 mysql 的分页语句 , 这里需要注意 mybatis 的返回值不是基本类型

<select id="queryAll" resultType="java.util.Map"  resultMap="UserResultMapper">
SELECT * FROM users LIMIT #{page},#{rows} 
select>
<select id="queryCount"  resultType="int">
        SELECT COUNT(*) FROM users
    select>
//这里我们需要传入Map键值对来保存page 和 rows 这两个参数``
    List<User> queryAll(Map<String, Integer> map);
    int queryCount();

service 的实现类

public List<User> queryAll(int page, int rows) {
Map<String, Integer> map = new HashMap<String, Integer>();
//计算分页的起始页
map.put("page", (page-1)*rows);
//这里传入数据总条数
        map.put("rows", rows);
        List<User> list = userMapper.queryAll(map);
        return list;
    }
    public int queryCount() {
        // TODO Auto-generated method stub
        return userMapper.queryCount();
    }

接下来在 action 中 , 我们只需要将页面需要的page 和 rows 参数返回给 json 字符串就行了 。

@RequestMapping("queryall")
    @ResponseBody
    public Map<String, Object> queryAll(int page,int rows){
        List<User> list = userService.queryAll(page,rows);
        int count = userService.queryCount();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("total", count);
        map.put("rows", list);      
        return map;
    }

这里要注意 , 传入的方法参数名字不能被改变 , 因为页面中 easyui 已经帮我们写的名字是 page 和 rows
jsp 页面不需要我们做任何改变就可以完成分页功能!!

你可能感兴趣的:(SSMybatis,easyUI)