完成历史数据查询心得

原创 2013年12月04日 09:51:36


0.项目前准备

这是来睿通所做的第一个项目,在正式真枪实弹上手之前组长让我用两个星期来学习项目中要使用但我不熟悉的一些知识。

1.etmvc

etmvc的基础知识这里就不啰嗦了,我就说说我没有注意到的地方:

  1. 在正式做历史数据查询功能时,看到以前同事所写的如下代码看的本人一头雾水,无奈之下向组长求助;
    colums.put("hiCode", "{field:'code',width:100,title:'药品编码'}");
    colums.put("hiClasses", "{field:'classes',width:100,title:'总类别'}");
    colums.put("hiTypeName", "{field:'typeName',width:300,title:'所属类别'}");
    colums.put("hiMedicineName", "{field:'medicineName',width:300,title:'药品名称'}");
    colums.put("hiAgent", "{field:'agent',width:100,title:'剂型'}");
    .........
    
  • 在组长解释下才知道,这里是将数据以json格式装入map中,以键值的形式传入前台(也可以说被前台抓取,easyui真心强大),当然这一系列数据会被循环抓取,然后绑定权限,在前台可以根据给定的权限来进行展示。
  1. 在最初学习etmvc时,愚鲁的我一直在纳闷,这etmvc如何与数据库进交互,在学习时由于自己东拉西扯就是没有抓住重点,所以这个疑问没有解决,自己又很迟钝的忘了请教孙工,这下麻烦大了。做项目时有一段代码死活不明白(可见有疑问就要及时解决,不然肯定要青肠子的),代码如下:
    private Map<String, Object> getHistoryInfoDatas(int page, int rows,
    String enterpriseName,String createTime,String query) throws Exception {
      // 瓶装查询条件sql
      StringBuffer querySql = new StringBuffer("status = ?");
      List<Object> objs = new ArrayList<Object>();
      objs.add(0);
      MenuElementPrivilege mep = this.getMenuElementPrivilege();
      if(enterpriseName != null && !"".equals(enterpriseName)){
        querySql.append(" and ").append("enterpriseEnglishName = ?");
        objs.add(enterpriseName);
        if(mep!=null&&mep.getMerData()!=null){
          if(mep.getMerData().contains(enterpriseName)){
            querySql.append(" and ").append("(enterpriseEnglishName = ?)");
            objs.add(enterpriseName);
          }else{
            querySql.append(" and ").append("(enterpriseEnglishName = ?)");
            objs.add("enterpriseEnglishName");
          }
        }
      }else{
        if(mep!=null&&mep.getMerData()!=null){
          StringBuffer str = new StringBuffer();
          String [] datas = mep.getMerData().split(",");
          for(int i = 0; i < datas.length; i++) {
            str.append("'").append(datas[i]).append("'");
            if(i!=datas.length-1)
              str.append(",");
          }
          querySql.append(" and ").append("(enterpriseEnglishName in ("+str.toString()+"))");
        }
      }
      if(null!=createTime&&!"".equals(createTime)){
        querySql.append(" and ");
        querySql.append("DATE_FORMAT(createTime,'%Y-%m-%d') = '");
        querySql.append(createTime);
        querySql.append("'");
      }
      if (query != null && !"".equals(query)) {
        querySql.append(" and ").append(" (code like ? or classes like ? or typeName like ? or medicineName like ? )");
        objs.add("%"+query+"%");
        objs.add("%"+query+"%");
        objs.add("%"+query+"%");
        objs.add("%"+query+"%");
        
      }
      // 查询总条数
      long count = HistoryInfo.count(HistoryInfo.class, querySql.toString(), objs.toArray());
    
      // 根据条件查询数据集
      List<HistoryInfo> list = HistoryInfo.findAll(HistoryInfo.class,querySql.toString(), objs.toArray(), "createTime desc", rows, (page - 1) * rows);
      Map<String,Object> result = new HashMap<String,Object>();
      result.put("total",count);
      result.put("rows", list);
      result.put("page", page);
      return result;
      }
    
  • 看到这段代码初学者可定会小郁闷一番(当然理解力牛逼的人除外),这select * from .... 在哪?呵呵,不要急 ,HistoryInfo?.class 就相当select * fromHistoryInfo?

,而前段代码中的sql语句就相当于 where 之后的句子,是不是很简单,但本人当时的确不会。这样的查询方式与ibatis 及hibernate 相比到底有什么优劣势,本人目前还真不知道,这问题留给将来的自己吧!

  1. etmvc 当然还有好多地方太不熟悉,但这需要多动手,多看代码,多向高手请教,etmvc的总结就到这里吧。

2. easyui

  • 这几年国内优秀的开源框架越来越多,这都是牛人们辛勤耕耘的成果啊,表示一下对他们的尊敬先。easyui就是一个非常棒的成果之一,Query EasyUI是一组基于jQuery的UI插件集合,在学习期间也遇到了不少问题。
  • 首先是对一个整体的把握不够好,学习时完全抓不住重点,导致使用时问题多多,比如对DataGrid使用的一塌糊涂,这里就从DataGrid说起。
  • 其次学习一个东西时,应先抓住重点:
    • 第一、它是用来干什么的。
    • 第二、它有什么特点。
    • 第三、它怎么用。
  • 还是拿datagrid来说事,在这次开发中用的最多的easyui插件就是datagrid
    • 1>首先他会将前面标题1 中装入colums的数据抓出来。也就是说它是用来展现数据的,
    • 2>他抓取的数据是以json的格式传入的
    • 3>datagrid有许多方法,时间,属性需要对其使用熟练,比如在做分页导出时,我想了好半天就是想不出方法,只好再次向孙工求救!在孙工帮助下问题解决了,而解决分页问题时,对datagrid方法,时间,属性等的使用就是一个综合能力的考验。首先要将数据分页导出,那么必须抓取页面上数据内容,也就是 datagrid 中的数据。
  • 当datagrid加载过一次后,他会将加载之后的内容记忆,那么只需拿出datagrid中的内容就可以了,但是如何拿出呢,请看如下代码:
    //设置分页控件
    var pg = $('#data').datagrid('getPager');
    //拿出当前的页数与每页显示的数据量
    var rows = $(pg).pagination('options').pageSize;
    var page = $(pg).pagination('options').pageNumber; 
    
  • 这样问题就迎刃而解

历史数据解决方案

很多系统会要求记录历史数据,要求可以追朔历史数据,有些甚至要求可以从历史数据中恢复数据。目前做的一个项目,也有这点要求,于是就做了一个实现方案。本方案采用的是关系数据库表记录的方式,要看系统需求,如果...
  • david_pfw
  • david_pfw
  • 2016年06月26日 22:10
  • 638

Activiti查看流程历史记录(六)

1.画流程图。 2.部署流程。 3.启动流程实例。 4.查看流程任务(可无)。 5.办理任务。 6.查看流程历史记录。 流程引擎: ProcessEngine pe = ProcessE...
  • QCIWYY
  • QCIWYY
  • 2015年08月28日 15:07
  • 2456

基于历史数据查询的爬虫操作

网站:http://www.szmb.gov.cn/article/QiXiangJianCe/ 目的:抓取过去一年内深圳各个区的逐小时降雨数据 历史查询需要通过网页中的日历控件选择,而且日历控件...
  • liuph_
  • liuph_
  • 2016年07月03日 13:26
  • 1345

获取历史和实时股票数据接口

股票数据的获取目前有如下两种方法可以获取: http/javascript接口取数据 web-service接口 1.1Sina股票数据接口 以大秦铁路(股票代码:601006)为例,如果要获取它的...
  • u014595019
  • u014595019
  • 2015年08月12日 20:57
  • 5064

雅虎财经和新浪财经股票API,中国A股实时和历史数据API获取

雅虎财经和新浪财经股票API,中国A股实时和历史数据API获取
  • AAA123524457
  • AAA123524457
  • 2016年01月18日 15:49
  • 7630

实战:抓取某只基金历史净值数据

http://fund.eastmoney.com/f10/jjjz_519961.html 1、接下来,我们需要动手把这些html抓取下来(这部分知识我们之前已经学过,现在不妨重温)# codin...
  • github_26672553
  • github_26672553
  • 2017年11月30日 14:00
  • 314

MySQL多表SQL查询

01.创建数据库表结构并插入数据 [sql] view plain copy DROP DATABASE exam;   CREATE DATABASE exam;   USE...
  • henni_719
  • henni_719
  • 2016年05月17日 13:28
  • 1158

zabbix--从入门到精通之zabbix历史数据

zabbix从入门到精通之zabbix历史数据 1.1 通过zabbix前台获取历史数据。             通过zabbix的前台也就是登陆web页面的方式来查看监控项item的历史...
  • konglongaa
  • konglongaa
  • 2016年09月06日 16:19
  • 228

activiti流程设计 完成任务 查询个人任务 创建23张表

首先声明  activiti 的请去官网下载 package com.hoomsun.user.activiti; import java.io.FileInput...
  • caoheike
  • caoheike
  • 2016年06月29日 11:36
  • 3014

历史数据清理--方案

1.       数据库历史数据清理   #创建历史表 create table ag_alert_record_history asselect * from ag_alert_record;   ...
  • konglongaa
  • konglongaa
  • 2017年02月24日 20:02
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:完成历史数据查询心得
举报原因:
原因补充:

(最多只允许输入30个字)