Query接口使用和说明

一、Query,是查询的意思,为了在数据库中寻找某一特定文件、网站、记录或一系列记录,由搜索引擎或数据库送出的消息。二、Query在hibernate中的应用:Query是hibernate提供的查询的一种方式,这种方式会直接取查表而不是从缓存中查,除非你在query查询之前手动设置从缓存中查Query有两个一个是hibernate原生的,一个是hibernate对JTA的实现,都是用来查询用的Query是hibernate查询数据库用到的一个方法;在hibernate中,我们可以通过Query类的方法来得到各种不同的查询数据结果;Query可以参数化hql语句分页的时候会用到Query一般find能处理的就用find了三、hibernate中Query的用法通过SessionFactory获得了session对象后,除了可以通过get(类名.class,id)方法得到相应的对象,还可以通过获得Query对象来取得需要的对象Queryquery=session.createQuery("查询语句如fromUserBean");Listlist=query.list();//得到一个集合也可以用query.uniqueResult();//得到一个单个的对象分页查询:query.setFirstResult(位置如0);//表示从哪个位置开始查询,返回query对象query.setMaxResult(记录条数);//表示当页共几条记录,返回一个集合session.createQuery("selectcount(*)from类名").uniqueResult();//得到记录总数查询语句同sql查询语句很想象,只是将表名换作类名,字段名换作属性名,如果查询需要条件可以使用占位符来替换对应的属性名,也可以使用:变量名来作为占位符。一个分页查询:publicQueryResult<T>list(finalClass<T>clazz,finalintindex,finalintcount,finalStringwherehql,finalObject[]params,finalMap<String,String>orderby){finalQueryResult<T>qr=newQueryResult<T>();hibernateTemplate.executeFind(newHibernateCallback<T>(){@OverridepublicTdoInHibernate(Sessionsession)throwsHibernateException,SQLException{Queryquery=session.createQuery("from"+getEntityName(clazz)+"o"+(StringUtils.isBlank(wherehql)?"":"where"+wherehql)+buildOrderby(orderby));setQueryParams(query,params);if(index!=-1&&count!=-1){query.setFirstResult(index);query.setMaxResults(count);}List<T>list=query.list();qr.setRecords(list);query=session.createQuery("selectcount(*)from"+getEntityName(clazz)+"o"+(StringUtils.isBlank(wherehql)?"":"where"+wherehql));setQueryParams(query,params);longtotalrecord=0;Objecttotal=query.uniqueResult();if(total!=null){totalrecord=Long.valueOf(total.toString());}qr.setTotalCount(totalrecord);return(T)list;}});returnqr;}/***给hql语句中的where子句中的参数赋值*@paramquery*@paramqueryParams*/protectedvoidsetQueryParams(Queryquery,Object[]queryParams){if(queryParams!=null&&queryParams.length>0){for(inti=0;i<queryParams.length;i++){query.setParameter(i,queryParams[i]);}}}/***创建hql语句的orderby子句*@paramorderby*@return*/protectedStringbuildOrderby(Map<String,String>orderby){StringBufferorderbyql=newStringBuffer("");if(orderby!=null&&orderby.size()>0){orderbyql.append("orderby");for(Stringkey:orderby.keySet()){orderbyql.append("o.").append(key).append("").append(orderby.get(key)).append(",");}orderbyql.deleteCharAt(orderbyql.length()-1);}returnorderbyql.toString();}四、Hibernate中的Query接口学习在Hibernate2.x中,可以用find()方法来执行HQL语句,但是在Hibernate3.x中却用Query接口来取代了find()方法,提供了更加强大的功能。下面简要的看一下它的用法:1可以使用“?”来设定参数。要严格的顺序2使用“:”后跟变量来设置参数。没有严格的顺序3参数绑定4setEntity()方法把参数和一个持久化类的实例来绑定5setParameter()方法6setPropertyies()方法7使用命名查询,通过在.hbm.xml中使用query标签,编写查询语句。8list()方法,该方法用于取得查询结果Lit结合。9iterator()该方法用于这样调价的查询,我们查询一大堆的记录,这里记录可能有的在缓存中...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?