
HQL是Hadoop生态中分布式系统基础架构组件使用的语言。
Hadoop介绍: Hadoop是一个,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许不熟悉 MapReduce 的开发人员也能编写数据查询语句,然后这些语句被翻译为 Hadoop 上面的 MapReduce任务。
核心架构:
Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。
通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。
from Object o where (oreceiver=username or occ=username) and ostatus!='垃圾'
Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。完整的HQL语句形式如下: Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc 其中的update/delete为Hibernate3中所新添加的功能,可见HQL查询非常类似于标准SQL查询。由于HQL查询在整个Hibernate实体 *** 作体系中的核心地位,下一节我将专门围绕HQL *** 作的具体技术细节进行讲解。
没太明白你要干嘛?就是要验证一个时间是否在系统时间之后1小时?简单的写了一个类你看一下……importjavautilCalendar;importjavautilGregorianCalendar;publicclassSolution{//系统时间Calendarsystem=newGregorianCalendar();//这个是那个要比较的时间,我这里写死了,具体的根据你的情况拿到就可以了Calendarmy=newGregorianCalendar(2011,1,20,20,40,40);//2011年1月20日20:40:40publicstaticvoidmain(String[]args){Systemoutprintln(newSolution()judge());}//判断方法publicbooleanjudge(){//将系统时间拨后一小时systemset(CalendarHOUR_OF_DAY,systemget(CalendarHOUR_OF_DAY)+1);//after方法进行比较returnmyafter(system);}}至于怎么把YYYY-MM-DDHH24:mm:ss转成Calendar如下:Strings=newString("2011-1-2020:11:11");DateFormatf=newSimpleDateFormat("yyyy-MM-DDHH:mm:ss");try{Dated=(Date)fparse(s);Calendarc=newGregorianCalendar();csetTime(d);}catch(ParseExceptionex){exprintStackTrace();}建议楼主多用Calendar整个jdk下还是Calendar健全一些Date比较混乱可以用用IBM的joda-time不错的时间处理库……
hql就是hibernate里的sql语句,CommodityFee是一个实体类,是数据库表的一个映射类,from CommodityFee就相当于sql中的from+该类对应的表名,select 后边的new CommodityFee()表示把查询结果构造成一个类,返回的结果集就是类了。
有了这个方法 查询就是浮云
申明:本方法由本人自行研究 如有不足之处请留言以及更正或者有更好的分页方法 可以留言共享
总所周知:java开发web程序不管是什么项目基本都会遇到分页 然而SSH2框架有多重搭建方式,当然,每个人自己搭建的框架都比较了解开发起来得心应手,克往往开发项目的是一个团队。其他成员不一定习惯用你的方法每个人写的方法也不一样比如有带参的等等
有一定程序功底的程序员 会自己写分页方法方便自己,但是当别人不熟悉你的方式时电泳其实很有可能该这么传参都不知道你还要写一个案例供他人参考。闲话不多说我们进入正题。
今天我就给大家总结下我所搭建的SSH2框架中的分页方法
首先我们先写一个有参数方法:selectByPages()
此方法有 每页显示多说条数据 pageSize 第几页pageNum 、SQL语句 hql、
另外还要一个Object数组 Object params 或者Object[]params 都可以
注意:这里的参数类型前倾加上 final 标示
//此方法执行带参分页前往数据库查询数据
protected List selectByPages(final int pageSize, final int pageNum,final String hql, final Object params) {
return (List)getHibernateTemplate()executeFind(new HibernateCallback() {
public List doInHibernate(orghibernateSession session)throws orghibernateHibernateException,javasqlSQLException {
orghibernateQuery query = sessioncreateQuery(hql);
for (int i = 0; i < paramslength; i++) { //循环参数数组
querysetParameter(i , params[i]);
}
querysetFirstResult((pageNum - 1) pageSize); //第几页
querysetMaxResults(pageSize); //每页显示条数
return querylist();
}
});
}
//此方法执行无参分页前往数据库查询数据
注意:这里的参数类型前倾加上 final 标示
这里需要参数 pageSize pageNum SQL语句 Object 数组
protected List selectByPage(final int pageSize, final int pageNum,final String hql, final Object params) {
return (List)getHibernateTemplate()executeFind(new HibernateCallback() {
public List doInHibernate(orghibernateSession session)throws orghibernateHibernateException,javasqlSQLException {
orghibernateQuery query = sessioncreateQuery(hql);
querysetFirstResult((pageNum - 1) pageSize); //第几页
querysetMaxResults(pageSize); //每页显示条数
return querylist();
}
});
}
接下来就是分页的重点方法:
注意:这里的参数类型前倾加上 final 标示
这里需要参数: pageSize pageNum 和一个对象 标示Object类型是标示这里可以传项目中任意一张表
public List getPageList(final Object entity,final Integer pageSize,final Integer pageNum){
//创建一个Object List集合
List<Object> params=new ArrayList<Object>();
//创建变量标示电泳带参分页还是无参分页
int bool = 0;
//得到action传过来的对象 注:这里可以是你项目中任何一个对象也就是说可以是任何一张表
Class clas = entitygetClass();
//组建前提SQL语句用StringBuffer 以方便后面逻辑需要好追加条件
//通过 clas的getSimpleName() 得到这个对象的名字
StringBuffer buff = new StringBuffer("from "+clasgetSimpleName()+" where 1=1");
//这里的buff = “from 表名/对象名 where 1=1”
javalangreflectField[] field = clasgetDeclaredFields();
//循环这个对象
for (int i = 0; i < fieldlength; i++) {
//field[i]getType()toString() 得到属性类型 如:javalongInteger
//field[i]getName() 得到属性名称 如:id name
try {
String firstLetter = field[i]getName()substring(0, 1)toUpperCase();
String getter = "get" + firstLetter + field[i]getName()substring(1);
Method method = entitygetClass()getMethod(getter, new Class[] {});
Object value = methodinvoke(entity, new Object[] {});
// 这里得到这个属性对应的值 如:id = "1" name = "张三"
if(value!=null&&!valueequals("")){
//如果这个属性的值不为空并且不等于null 那么现在就组建SQL语句 并将属性的值取出来 存到申明好的集合里面去
bool=1;
buffappend(" and "+field[i]getName()+" like order by "+field[0]getName());
paramsadd("%"+value+"%");
}else {
if(bool==0){
bool=0;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
//对吼判断bool等于0还是1 如果bool=0 我们就调用写好的selectByPage 无参分页方法
if(bool==0){
return selectByPage(pageSize, pageNum, entity, field[0]getName());
}
//对吼判断bool等于1 我们就调用写好的selectByPage() 带参分页方法
//这里将组建好的SQL语句传过去同事也将组建好的集合传给Object数组 记得SQL语句一定要toString() 集合要toArray()
return selectByPages(pageSize, pageNum, bufftoString(), paramstoArray());
}
}
感谢来宾细心阅读 纯属个人分享 如要转载请 注明原文来源,如有不对的地方请留言或者更正 谢谢
Java(Web)技术交流①群:20682437 群主 重庆-java-猫猫
原文作者:362440326
以上就是关于HQL是Hadoop生态中什么组件使用的语言全部的内容,包括:HQL是Hadoop生态中什么组件使用的语言、hql多条件查询、Java问题,某表对应的实体类为A,有一时间字段t,格式为yyyy-MM-dd hh:mm:ss。现在要count最近十日内每一等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)