Extjs的数据读取器store和后台返回类型简单解析

工作中用到了Extjs,从后台获取数据的时候,用到了extjs自己的Ext.data.store方法,然后封装了ExtGridReturn方法,

目的:前台用到Ext.data.store读取从后台传过来的数据,后台封装成ExtGridReturn类型

前台如下:

this.store = new Ext.data.Store({
            remoteSort:true,
            baseParams:{
                start:0,
                limit:this.pageSize
            },
            proxy:new Ext.data.HttpProxy({
                method:‘POST‘,
                url:this.getAllUrl
            }),
            reader:new Ext.data.JsonReader({
                totalProperty:‘results‘,
                root:‘rows‘
            },[‘rulesId‘,‘rulesTitle‘,‘rulesContent‘,‘rulesType‘,‘updateUser‘,{
                name:‘updateTime‘,
                type:‘date‘,
                dateFormat:‘time‘
            },‘rulesAuthor‘,‘isTop‘,{
                name:‘createTime‘,
                type:‘date‘,
                dateFormat:‘time‘
            }])
        });

当前的数据读取器是带有root和totalProperty的,所以,后台封装的类型如下:

package cn.edu.hbcf.common.vo;
 
import java.util.List;

/**
 * Ext Grid返回对象
 *
 * @author LiPenghui
 *
 */
public class ExtGridReturn {

/**
     * 记录总条数
     */
    private int results;
    
    private int otherCount;
    /**
     * 所有数据
     */
    private List<?> rows;

public ExtGridReturn() {

}

public ExtGridReturn(int results, List<?> rows) {
        this.results = results;
        this.rows = rows;
    }

public int getResults() {
        return results;
    }

public void setResults(int results) {
        this.results = results;
    }

public List<?> getRows() {
        return rows;
    }

public void setRows(List<?> rows) {
        this.rows = rows;
    }

public int getOtherCount() {
        return otherCount;
    }

public void setOtherCount(int otherCount) {
        this.otherCount = otherCount;
    }

}
Controller中的方法就可以这样写啦:如下:

@RequestMapping(value="/selectBaseRules",method=RequestMethod.POST)
    @ResponseBody
    public Object selectBaseRules(ExtPager pager,int rulesType){
        Criteria criteria = new Criteria();
        if(pager.getStart() !=null &&pager.getLimit() !=null){
            criteria.setStart(pager.getStart());
            criteria.setLimit(pager.getLimit());
            criteria.setOracleStart(pager.getStart());
            criteria.setOracleEnd(pager.getStart() + pager.getLimit());
        }
        try {
            criteria.put("rulesType", rulesType);
            List<BaseRules> list = baseRulesService.selectBaseRules(criteria);
            int total= baseRulesService.getTotalCount();
            return new ExtGridReturn(total, list);
        } catch (Exception e) {
            e.printStackTrace();
            return new ExceptionReturn(e);
        }
    },

mybatis中的xml配置文件如下:

<select id="selectBaseRules" resultMap="BaseRulesMap" parameterType="Criteria">
    <include refid="common.Oracle_Pagination_Head" />
    select t.rules_id      rulesId,
             t.rules_title   rulesTitle,
              t.rules_content rulesContent,
           t.rules_type    rulesType,
           t.update_time   updateTime,
           t.rules_author  rulesAuthor,
           t.is_top        isTop,
           t.create_time   createTime,
           t.UPDATE_USER   updateUser,
           s.account       account,
           s.real_name     realName,
           s.user_id       userId
      from SMS_BASE_RULES t
      left join spauth.base_users s
        on s.user_id = t.update_user
        <where>
            t.rules_type=#{condition.rulesType,jdbcType=INTEGER}
        </where>
    <include refid="common.Oracle_Pagination_Tail" />
</select>

很简单的封装了Extjs读取的类型。

时间: 2025-01-17 01:48:04

Extjs的数据读取器store和后台返回类型简单解析的相关文章

EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。

实现功能:查询单张表Student中返回指定的列 一:数据库表结构: 二:存储过程: 1 USE [AdventureWorksDW] 2 GO 3 /****** Object: StoredProcedure [dbo].[GetAllStudentInfo] Script Date: 2014/11/18 21:47:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- ==============

分表数据的页面显示和后台传递(简单实现)

需求:1.统计每个城市的某两项数据在一段时间内的总量,展示在页面上.2.将结果导出Excel文件. 目前数据库是分库分表设计,分为南北方双库,一个城市对应一张表. 从查询的效率和用户的感觉考虑,这时将所有数据查出后再显示到页面并不是最好的方式,而且代码也会变得较为复杂. 实现方式(偏前端): 1.获取数据并显示 页面使用表格方式显示数据 <table> <thead> <tr> <th>城市</th> <th>A</th>

Tips:配置SCOM报表数据读取器账户报错

安装SCOM 2012 R2报表服务器角色的时候,在配置operations manager账户界面提示错误"无法验证提供的一个或多个账户.请提供有效的用户名和密码". 经过检查: 1)scomadmin账户已经加入到了本地管理员组: 2)scomadmin账户已经加入到了SQL server的sysadmin组: 3)scomadmin账户未过期.密码可以登录: 错误原因: 本地系统时间比正常的时间慢了十几个小时,调整时间和日期之后,恢复正常.

DataReader对象(数据读取)

DataReader对象提供了一个只进只读的数据读取器,用于从查询结果中读取数据,它每次仅能读取一行数据. [常用属性]: FieldCount:获取当前行的列数: HasRows:表明查询结果中是否还存在未被读取的数据. [常用方法]: Close:关闭SqlDataReader对象: GetName:获取指定列的名称; Read:使SqlDataReader前进到下一条记录. [使用DataReader对象对数据库进行查询操作步骤]: 1.创建Connection对象: 2.打开数据库连接:

C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1

数据阅读器 当执行返回结果集的命令时,需要一个方法从结果集中提取数据. 处理结果集的方法有两个: 第一,使用数据阅读器(DataReader): 第二,同时使用数据适配器(Data Adapter)和ADO.NET数据集(DataSet). 本节将学习数据阅读器的有关知识. DataReader类 在ADO.NET中由每个数据提供程序实现自己的DataReader. 数据读取器(DataReader)是从一个数据源中选择某些数据的最简单的方法,但也是功能较弱的一个方法. DataReader类没

Extjs 4.2使用心得 --- store和reader使用技巧

最近老大要求使用Extjs写前端,故研究了一番.这玩意功能比起jquery-ui等确实功能强大很多,效果也比较高大上,但是确实比较难使用.本人智商欠费各种坑都跳遍了才试出成果,现主要记录下store和reader的心得. 在介绍store之前先说下Model,Model代表应用程序管理的一些对象.例如,我们想在系统中建模一个现实世界,我们将为这世界中的一些物体像使用者.产品和汽车等对象定义一个Model,这些Model对象将被系统注册,被Store(仓库)使用,然后这些仓库又被 Ext中许多与数

Extjs读取更改或者发送ajax返回请求的结果简单封装

Extjs的submit()方法提交的数据:如下: this.formPanel.getForm().submit({                url:this.saveUrl,                method:'POST',                params:{                    flag:e                },                success:function(form,action){              

OpenCV:基于MFC的视频播放器和图片读取器

实例工程包下载[OpenCV:基于MFC的视频播放器和图片读取器] 一.实现的功能 1.打开本地视频进行读取.播放.暂停.停止控制 2.图片打开功能分为两种:可使用"打开图片"按钮打开本地图片,或者点击comobox里面设定的图片列表选择并显示图片 二.编译环境 OS:Win8.1 x64 IDE:  Visual Studio 2013 OpenCV: 2.4.8 三.主要思路 1.视频的滑动条控制: ①主窗体的OnHScroll()响应函数负责响应slider滑动条的变化,这样就轻

简单的XML读取器

XML 指可扩展标记语言(EXtensible Markup Language) (有个很明显的槽点),是一种主要设计用来数据传输存储的语言. 有关语法规则我是参考了这个链接. http://www.w3school.com.cn/xml/xml_syntax.asp 看 gcc4 的时候觉得数据驱动编程很酷,于是顺带觉得xml很酷,正好暑假闲就写了个xml读取器看看,鼓捣了几天,弄好了大致上的功能,这里所说大致上,是能够满足检查语法错误并给出错误信息到标准输出设备(不保证报错信息绝对有用).如