dao中通过oracle查询list,oracle数据库使用Datagrid 数据列表的分页

数据列表的分页

使用oracle的分页实现。

1.1.1     dao

修改SysuserMapperCustom.xml中findSysuserList添加分页支持。

Oracle分页需要起始和结束下标,需要根据当前页码、每页显示数量、总条数(符合查询条件记录数)

使用PageQuery.java计算起始和结束的下标:

PageQuery为自己封装的工具类

使用方法:

New构造pageQuery对象,调用setPageParams方法,传入总条数、每页显示数量、当前页码,该对象中的属性PageQuery_start和PageQuery_end计算出了起始和结束的下标。

将PageQuery对象传入mybatis,将此对象作为包装对象的属性。

public classSysuserQueryVo {

private SysuserCustom sysuserCustom;

//分页参数

private PageQuery pageQuery;

Oracle分页sql:

0818b9ca8b590ca3270a3433284dd417.png

分页mapper.xml

分页头和分页的尾。

resultType="yycg.base.pojo.vo.SysuserCustom">

selectpage_2.*

from(select page_1.*, rownum page_num

from(

select* from (

selectSYSUSER.id,

SYSUSER.userid,

SYSUSER.username,

SYSUSER.groupid,

sysuser.USERSTATE,

SYSUSER.sysid,

decode(SYSUSER.Groupid,

'1',

(selectmc

fromuserjd where

id= sysuser.sysid),

'2',

(selectmc from userjd where

id=

sysuser.sysid),

'3',

(selectmc from useryy where id =

sysuser.sysid),

'4',

(selectmc from usergys where id = sysuser.sysid)

)

sysmc

from

SYSUSER

)sysuser

)page_1

where rownum <=${pageQuery.PageQuery_end}) page_2

where page_2.page_num >=${pageQuery.PageQuery_start}

]]>

总条数:符合条件记录数

在mapper.xml中创建一个select,返回总条数

resultType="int">

selectcount(*) from (

selectSYSUSER.id,

SYSUSER.userid,

SYSUSER.username,

SYSUSER.groupid,

sysuser.USERSTATE,

SYSUSER.sysid,

decode(SYSUSER.Groupid,

'1',

(selectmc

fromuserjd where

id= sysuser.sysid),

'2',

(selectmc from userjd where

id=

sysuser.sysid),

'3',

(selectmc from useryy where id =

sysuser.sysid),

'4',

(selectmc from usergys where id = sysuser.sysid)

)

sysmc

from

SYSUSER

)sysuser

1.1.2     service

public interfaceUserService {

//根据条件查询用户列表

publicList findSysuserList (SysuserQueryVo sysuserQueryVo) throws Exception;

//根据条件查询记录总数

public int  findSysuserCount (SysuserQueryVosysuserQueryVo) throwsException;

1.1.3     action

调用service执行分页查询,准备PageQuery对象数据(包括起始和结束下标)。

先调用service查询出总数。

Datagrid加载数据列表时,固定向action方法传两个分页参数:

0818b9ca8b590ca3270a3433284dd417.png

当前页码和每页显示个数

Action分页查询代码:

//用户查询页面的结果集

//最终DataGridResultInfo通过@ResponseBody将java对象转成json

@RequestMapping("/queryuser_result")

public @ResponseBodyDataGridResultInfo queryuser_result(

SysuserQueryVosysuserQueryVo,

int page,//页码

int rows//每页显示个数

)throws Exception{

//非空校验

sysuserQueryVo= sysuserQueryVo!=null?sysuserQueryVo:new SysuserQueryVo();

//查询列表的总数

int total = userService.findSysuserCount(sysuserQueryVo);

PageQuerypageQuery = newPageQuery();

pageQuery.setPageParams(total,rows, page);

sysuserQueryVo.setPageQuery(pageQuery);

//分页查询,向sysuserQueryVo中传入pageQuery

Listlist = userService.findSysuserList(sysuserQueryVo);

DataGridResultInfodataGridResultInfo = new DataGridResultInfo();

//填充total

dataGridResultInfo.setTotal(total);

//填充rows

dataGridResultInfo.setRows(list);

return dataGridResultInfo;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值