关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 12316|回复: 2

[Minidao] sql查询,分页问题

[复制链接]
发表于 2018-8-18 22:32:45 | 显示全部楼层 |阅读模式
本帖最后由 buerguo 于 2018-8-18 22:35 编辑

sql语句查询结果集封装好后给前台, 分页只能展示第一页的内容, page只是1, total只是第一页最大条数, 下面是我写的:

dao:====================
/**
* 查询客户信息
*
* @param resultVo
* @param page
* @param rows
* @param request
* @return
*/
@Override
public DataReturn getAllEntities(ResultVo resultVo, int page, int rows, HttpServletRequest request) {
    StringBuilder sql = new StringBuilder(
            " SELECT " +
            " a.acc_no, " +
            " a.address, " +
            " a.premise_type, " +
            " b.BALANCE, " +
            " m.meter_id " +
            " FROM " +
            " A_CUSTOMER_INFO a " +
            " LEFT JOIN A_ACCT_BAL b ON a.acc_no = b.ACC_NO " +
            " LEFT JOIN A_METER_INFO m ON a.acc_no = m.acc_no " +
            " WHERE 1=1 "
);

    StringBuilder condition = new StringBuilder("");
    ArrayList params = new ArrayList();

    String accNo = resultVo.getAccNo();
    if (accNo != null && !"".equals(accNo)) {
        condition.append(" and a.acc_no like ? ");
        params.add("%" + accNo + "%");
    }

    String sqlQuery = sql.append(condition.toString()).toString();
    Query q = getSession().createSQLQuery(sqlQuery);

    if (params != null && params.size() > 0) {
        for (int i = 0; i < params.size(); i++) {
            q.setParameter(i, params.get(i));
        }
    }
    q.setFirstResult((page - 1) * rows).setMaxResults(rows);
    List<Object[]> list = q.list();

    List<ResultVo> resultVos = new ArrayList<>();
    DecimalFormat df = new DecimalFormat("0.00");
    if (list != null && list.size() > 0) {
        ResultVo resultVo1 = null;
        for (int i = 0; i < list.size(); i++) {
            resultVo1 = new ResultVo();
            Object[] objects = list.get(i);
            if (objects != null) {
                resultVo1.setAccNo(objects[0] != null ? (String) objects[0] : "");
                resultVo1.setAddress(objects[1] != null ? (String) objects[1] : "");
                resultVo1.setPremiseType(objects[2] != null ? (String) objects[2] : "");
                if (objects[3] != null) {
                    BigDecimal big3 = ((BigDecimal) objects[3]).setScale(2, BigDecimal.ROUND_HALF_UP);
                    double db3 = big3.doubleValue();
                    String format = df.format(db3);
                    BigDecimal bigbal = new BigDecimal(format);
                    resultVo1.setBalance(bigbal);
                }
                resultVo1.setMeterId(objects[4] != null ? (String) objects[4] : "");
                resultVos.add(resultVo1);
            }
        }
    }

    int count = list.size();
    DataReturn data = new DataReturn();
    data.setRows(resultVos);
    data.setTotal(count);

    return data;
}

controller:====================
@RequestMapping(params = "definedDatagrid")
public void definedDatagrid(ResultVo resultVo, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
   DataReturn dataReturn = this.topupRecordService.getAllEntities(resultVo,dataGrid.getPage(),dataGrid.getRows(),request);
   dataGrid.setResults(dataReturn.getRows());
   dataGrid.setTotal((int)dataReturn.getTotal());
   TagUtil.datagrid(response, dataGrid);
}

jsp:====================
<div class="easyui-layout" fit="true">
    <div region="center" style="padding:0px;border:0px">
        <t:datagrid name="collectionAgentInfoList" checkbox="false" pageSize="10" sortName="accNo" pagination="true" fitColumns="true" title="Collection Agent Information List"
                        superQuery="false" actionUrl="topupRecordController.do?definedDatagrid" idField="accNo" fit="true" queryMode="group" filter="true" >
            <t:dgCol align="center" title="Account No." query="true" field="accNo" width="100"></t:dgCol>
            <t:dgCol align="center" title="Credit Balance" field="balance" width="80"></t:dgCol>
            <t:dgCol align="center" title="Premise Type" field="premiseType" width="80"></t:dgCol>
            <t:dgCol align="center" title="Meter No." field="meterId" width="120"></t:dgCol>
            <t:dgCol align="center" title="Customer Address" field="address" width="200"></t:dgCol>
        </t:datagrid>
    </div>
</div>
我写的哪里有问题吗?怎么修改呢


发表于 2018-8-20 11:25:09 | 显示全部楼层
自己写的代码,我们这边没办法检查,你可以参考jeecg的例子
 楼主| 发表于 2018-8-20 11:33:16 | 显示全部楼层
admin 发表于 2018-8-20 11:25
自己写的代码,我们这边没办法检查,你可以参考jeecg的例子

解决了, 谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表