PageHelper 分页插件只用Page、不用PageInfo 的写法

PageHelper 分页插件,学到的写法是得到Page 对象后再转成PageInfo 对象,但Page 是ArrayList 的子类,里面包含了数据列表和分页信息,为什么不能直接用Page 对象做分页呢?问题只是如何在页面取出Page 中数据。经过多次尝试,终于验证这个想法是可行的。

0)环境:SpringMVC + Spring + MyBatis。

1)mybatis 配置文件添加PageHelper 插件信息。

	
		
			
            
            
		
	

2)Service 实现类,直接返回Page 对象。

    PageHelper.startPage() 的两个参数:pageNum (当前页) 通过第一步的配置完成初始化;pageSize (每页展示条数) 可以放到常量接口类(放utils 包) 里面。

@Override
	public Page  getUserPage(Page page) {
		PageHelper.startPage(page.getPageNum(), 3);
		return (Page) userDao.getUserList();
	}

3)Controller 方法。此处方法形参Page 直接就是插件里的Page 类。

  • 此处Page 类后面不写 的话,进入用户列表页面时浏览器会报一个奇怪的错误:Root Cause: java.lang.IllegalArgumentException: Cannot generate variable name for non-typed Collection parameter type,控制台没报错信息,Baidu Google 都找不到一样的案例,最后自己发现是形参类不完整的问题。
        @Autowired
	private IUserService userService;

	@RequestMapping(value = "/getUserPage")
	public String getUserPage(Page page, ModelMap map) {
		page = userService.getUserPage(page);
		map.put("page", page);
		map.put("url", "user/getUserPage?");
		return "userList";
	}

4)展示页面,因为page 是ArrayList 的子类,直接把它作为List 来用即可。


		
id 姓名 密码 生日 操作
${user.id} ${user.name} ${user.password} ${user.birthday} 编辑 删除

5)分页页面,用了layui 分页插件。关键在这里:Page 对象里含有分页信息,但因为它又是List,直接用${page.total} 这种写法是取不到分页信息的,试了几次,用下面代码写法可行:${page.getTotal()}

PS: 还有一种用下标的EL 表达式写法,不循环也能取到List 里面实体数据的值:${page[0].id}



">

 

Insert title here






你可能感兴趣的:(SSH)