jeesite4为我们提供了比较简介的基础操作数据的功能,但在实际开发过程中会有很多自定义的需求及功能的数据操作,下面是对于简单查询数据分页的功能扩张。这个需要自己写查询的list和count求总条数语句
1.这个是controller里面的调用,需要用一个对象来保存page的参数,让页面请求的参数得以保存一致
@SuppressWarnings({"unchecked","rawtypes"})
@RequiresPermissions("x:xx:view")
@RequestMapping(value = "xxxx")
@ResponseBody
public Page xxxx(TRequest tRequest, HttpServletRequest request, HttpServletResponse response) {
//实例化page对象
Page page=new Page(request, response);
//设置分页数
//page.setPageSize(5);
//参数map
Map map=new HashMap();
//设置分页参数
tRequest.setPage(page);
map.put("tRequest", tRequest);
page = tRequestApplyService.findPageByParam(map);
return page;
}
2.service层可将获取的list保存到原有page中,如果使用原始的分页查询的形式
例如:Page<TRequest> page = tRequestService.findPage(new Page<TRequest>(request, response), tRequest);
就是通过new page的形式会在自己写的sql中自动带上分页limit和count的求和sql,但是count的求和sql是获取不到自己带的参数的,除了实体对象的参数还是可以获取到,其他的为null,查询不准确。
public Page findPageByParam(Map map) {
//获取page对象
Page page = (Page)((TRequest) map.get("tRequest")).getPage();
//查询测量列表
List list=tRequestApplyDao.findPageByParam(map);
page.setList(list);
//查询统计总条数
page.setCount(tRequestDao.byParamCount(map));
//返回page
return page;
}
3.dao
public List findPageByParam(Map map);
/**
*
* @Description:
* @param map
* @return
* int 返回类型
*/
public int byParamCount(Map map);
4.xml查询和求和语句
<select id="findPageByParam" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT
*
FROM
t_request a
<if test="tRequest.page !=null and tRequest.page.pageNo!=null and tRequest.page.pageSize!=null">
limit ${tRequest.page.pageNo==null?0:(tRequest.page.pageNo-1)*tRequest.page.pageSize},${tRequest.page.pageSize}
</if>
</select>
<select id="byParamCount" resultType="java.lang.Integer" parameterType="java.util.HashMap">
SELECT count(1)
FROM
t_request a
</select>
5.end,以上为自己在开发过程中的例子,如果有更好的方法大家可以一起分享。