首页 > 后端 > 经验 > criteria数据库哪些方法,Hibernate Criteria 查询日期条件

criteria数据库哪些方法,Hibernate Criteria 查询日期条件

来源:整理 时间:2024-07-21 05:59:21 编辑:黑码技术 手机版

本文目录一览

1,Hibernate Criteria 查询日期条件

需要先转换格式你直接用会出现所以你最好转一下格式再来用

Hibernate Criteria 查询日期条件

2,java中criteria联查的使用方法

联合查询需要在对应的po有关联,然后criteria.createALias ,了解一下criteria的别名,其实就是连接表。你要统计可以使用投影criteria.setProjection,如统计行数可以用criteria.setProjection(Projections.rowCount()),统计field字段总数用setPrejection(Projections.sum(field)) 等。

java中criteria联查的使用方法

3,在java中Criteria 的具体使用方法

这个东西已经过时了,而且sql条件增加很麻烦,现在都通过StringBuffer的append方式直接进行sql语句拼装实现或者是hibernate注入的形式实现了,所以建议考虑代码重构。
http://wenku.baidu.com/view/878f24c708a1284ac850435c.html
完成具体的用法 百度文科有 自己下下来word文档总比别人下载了贴在这里方便地址在下面 我刚看了一下是比较全的

在java中Criteria 的具体使用方法

4,Criteria 和 DetachedCriteria的区别与使用

Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name)进行DetachedCriteria 实例的创建。 Spring 的框架提供了getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结果。Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 LockMode (数据库锁模式)。下面对 Criterion 和 Projection 进行详细说明。
criteria 和 detachedcriteria 的主要区别在于创建的形式不一样, criteria 是在线的,所以它是由 hibernate session 进行创建的;而 detachedcriteria 是离线的,创建时无需session,detachedcriteria 提供了 2 个静态方法 forclass(class) 或forentityname(name)进行detachedcriteria 实例的创建。 spring 的框架提供了gethibernatetemplate().findbycriteria(detachedcriteria) 方法可以很方便地根据detachedcriteria 来返回查询结果。使用如下:1. 说明restrictions 是产生查询条件的工具类。2. 定义可以直接用class 创建detachedcriteria seardc =detachedcriteria.forclass(qymlperson.class);也可以用hibernate 的session 创建session.createcriteria(student.class)3. 条件查询3.1 多条件的and 规则通过seardc.add(restrictions.eq("unid", userid))实现条件查询。多次添加的条件,默认的规则是and.3.2 多条件的or 规则如果实现or 的查询,需要按照如下方式进行seardc.add(restrictions.or(restrictions.eq("deptunid", "aa"),restrictions.isnull("deptunid")));其中isnull 表示一个常规字段是否为空,isempty 用来表示一个集合字段是否为空。4. 查询排序通过seardc.addorder(order.asc(propertyname1))可以添加排序,如果有多个排序字段,可以添加多次;最终的结果将按照添加的次序进行排序处理。

5,hibernate中criteria查询是用什么设计模式实现的

要对资料库管理系统进行操作,最基本的就是使用SQL(Standard Query Language)语句,大部份的资料库都支援标准的SQL语句,然而也有一些特定于资料库的SQL语句,应用程式配合SQL语句进行资料库查询时,若使用到特定于资料库的SQL语句,程式本身会有相依于特定资料库的问题。 使用Hibernate时,即使您不了解SQL的使用与撰写,也可以使用它所提供的API来进行SQL语句查询,org.hibernate.Criteria对SQL进行封装,您可以从Java物件的观点来组合各种查询条件,由Hibernate自动为您产生SQL语句,而不用特别管理SQL与资料库相依的问题。 以最基本的查询来说,如果您想要查询某个物件所对应的资料表中所有的内容,您可以如下进行查询: Criteria criteria = session.createCriteria(User.class);List users = criteria.list(); for(Iterator it = users.iterator(); it.hasNext(); ) {User user = (User) it.next();System.out.println(user.getId() +" \t " + user.getName() +"/" + user.getAge());} Criteria建立后,若不给予任何的条件,预设是查询物件所对应表格之所有资料,如果您执行以上的程式片段,并于设定档中设定了了Hibernate的”show_sql”属性,则可以在主控下看到以下的SQL语句之产生: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ Criteria基本查询条件设定 org.hibernate.Criteria实际上是个条件附加的容器,如果想要设定查询条件,则要使用org.hibernate.criterion.Restrictions的各种静态方法传回org.hibernate.criterion.Criteria实例,传回的每个org.hibernate.criterion.Criteria实例代表着一个条件,您要使用org.hibernate.Criteria的add()方法加入这些条件实例,例如查询”age”大于20且小于40的资料: Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.gt("age", new Integer(20)));criteria.add(Restrictions.lt("age", new Integer(40)));List users = criteria.list(); for(Iterator it = users.iterator(); it.hasNext(); ) {User user = (User) it.next();System.out.println(user.getId() +" \t " + user.getName() +"/" + user.getAge());} Restrictions的gt()方法表示大于(great than)的条件,而lt表示小于(less than)的条件,执行以上程式片段,观察所产生的SQL语句,将使用where与and子句产来完成SQL的条件查询: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.age>? and this_.age 使用add()方法加入条件时,预设是使用and来组合条件,如果要用or的方式来组合条件,则可以使用Restrictions.or()方法,例如结合age等于(eq)20或(or)age为空(isNull)的条件: Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.or(Restrictions.eq("age", new Integer(20)),Restrictions.isNull("age")));List users = criteria.list(); 观察所产生的SQL语句,将使用where与or子句完成SQL的条件查询: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where (this_.age=? or this_.age is null) 您也可以使用Restrictions.like()方法来进行SQL中like子句的功能,例如查询”name”中名称为”just”开头的资料: Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.like("name", "just%"));List users = criteria.list(); 观察所产生的SQL语句如下: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name like ? Restrictions的几个常用限定查询方法如下表所示: 方法 说明Restrictions.eq 等于Restrictions.allEq 使用Map,使用key/value进行多个等于的比对Restrictions.gt 大于 >Restrictions.ge 大于等于 >=Restrictions.lt 小于 <Restrictions.le 小于等于 <=Restrictions.between 对应SQL的BETWEEN子句Restrictions.like 对应SQL的LIKE子句Restrictions.in 对应SQL的in子句Restrictions.and and关系Restrictions.or or关系 Criteria进阶查询条件设定 使用Criteria进行查询时,不仅仅能组合出SQL中where子句的功能,还可以组合出如排序、统计、分组等的查询功能。 排序 您可以使用Criteria进行查询,并使用org.hibernate.criterion.Order对结果进行排序,例如使用Oder.asc(),指定根据”age”由小到大排序(反之则使用desc()): Criteria criteria = session.createCriteria(User.class);criteria.addOrder(Order.asc("age"));List users = criteria.list(); 注意在加入Order条件时,使用的是addOrder()方法,而不是add()方法,在产生SQL语句时,会使用order by与asc(desc)来进行排序指定: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ order by this_.age asc 限定查询笔数 Criteria的setMaxResults()方法可以限定查询回来的笔数,如果配合setFirstResult()设定传回查询结果第一笔资料的位置,就可以实现简单的分页,例如传回第51笔之后的50笔资料(如果有的话): Criteria criteria = session.createCriteria(User.class);criteria.setFirstResult(51);criteria.setMaxResults(50);List users = criteria.list(); 根据您所指定得资料库,Hibernate将自动产生与资料库相依的限定笔数查询子句,例如在MySQL中,将使用limit产生以下的SQL语句: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ limit ?, ? 统计动作 您可以对查询结果进行统计动作,使用org.hibernate.criterion.Projections的avg()、rowCount()、count()、max()、min()、 countDistinct()等方法,再搭配Criteria的setProjection()方法加入条件设定,例如对查询结果的"age"作平均: Criteria criteria = session.createCriteria(User.class);criteria.setProjection(Projections.avg("age"));List users = criteria.list(); 上面的程式将由Hibernate自动产生SQL的avg函数进行平均计算: Hibernate: select avg(this_.age) as y0_ from T_USER this_ 分组 还可以配合Projections的groupProperty()来对结果进行分组,例如以"age"进行分组,也就是如果资料中"age"如果有 20、20、25、30,则以下会显示20、25、30: Criteria criteria = session.createCriteria(User.class);criteria.setProjection(Projections.groupProperty("age"));List users = criteria.list(); 上面的程式将由Hibernate自动产生SQL的group by子句进行分组计算: Hibernate: select this_.age as y0_ from T_USER this_ group by this_.age 如果想同时结合统计与分组功能,则可以使用org.hibernate.criterion.ProjectionList,例如下面的程式会计算每个年龄各有多少个人: ProjectionList projectionList = Projections.projectionList();projectionList.add(Projections.groupProperty("age"));projectionList.add(Projections.rowCount()); Criteria criteria = session.createCriteria(User.class);criteria.setProjection(projectionList);List users = criteria.list(); 观察所产生的SQL语句,将使用group by先进行分组,再针对每个分组进行count函数的计数 Hibernate: select this_.age as y0_, count(*) as y1_ from T_USER this_ group by this_.age 根据已知物件进行查询 设定查询条件并非一定要使用Restrictions,如果属性条件很多,使用Restrictions也不方便,如果有一个已知的物件,则可以根据这个物件作为查询的依据,看看是否有属性与之类似的物件,例如: User user = new User();user.setAge(new Integer(30)); Criteria criteria = session.createCriteria(User.class);criteria.add(Example.create(user)); List users = criteria.list(); 您可以透过org.hibernate.criterion.Example的create()方法来建立Example实例,Example实作了Criteria介面,因此可以使用add()方法加入至Criteria条件设定之中,Hibernate将自动过滤掉空属性,根据已知物件上已设定的属性,判定是否产生于where子句之中: Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where (this_.age=?)
文章TAG:criteria数据数据库哪些criteria数据库哪些方法Criteria查询日期条件

最近更新

  • st无线充电解码程序,无线充电qi-fsk解码st无线充电解码程序,无线充电qi-fsk解码

    联想H16蓝牙耳机是否支持无线充电No无线充电,其配备了升级后的新typeC2.0闪充接口,充电更快更方便。无线-3无线充电:1的优缺点,利用无线磁电感应充电,耳机和无线充电都有宝贝,小米真无线蓝.....

    经验 日期:2024-07-21

  • 关于经济的数据库有哪些,关于世界经济数据的数据库哪个比较好用数据较全面和权威关于经济的数据库有哪些,关于世界经济数据的数据库哪个比较好用数据较全面和权威

    关于世界经济数据的数据库哪个比较好用数据较全面和权威可以看一下CEIC全球数据库,CEIC全球数据库涵盖全球128个国家超过一百万条时间序列数据;数据库中包含各国GDP,通货膨胀,出口,旅游等.....

    经验 日期:2024-07-21

  • 有哪些光学卫星数据库应用,常用的卫星影像数据有哪些有哪些光学卫星数据库应用,常用的卫星影像数据有哪些

    常用的卫星影像数据有哪些包括高分辨率影像、雷达影像、中低分辨率影像。这个找北京揽宇方圆要一份常用的卫星影像数据表就可以,他们网站很详细或者直接客服他们。2,常用的遥感卫星数据.....

    经验 日期:2024-07-21

  • 质谱数据库有哪些,核磁共振质谱的资料质谱数据库有哪些,核磁共振质谱的资料

    核磁共振质谱的资料2,常用的查询蛋白质结构以及序列的数据库主要有哪些3,kurucz谱线数据库是什么意思4,如何在其它电脑安装安捷伦质谱数据库5,为什么要建立串联质谱MRM数据库1,核磁共振质谱.....

    经验 日期:2024-07-20

  • 核心数据库有哪些,数据库有哪几种核心数据库有哪些,数据库有哪几种

    数据库有哪几种2,数据库系统有哪些3,数据库有哪些4,国际上主要的核算数据库有哪些内容5,常用数据库有哪些1,数据库有哪几种常用关系形,SQLServer、MYSQL、ORACLE、sqlite……………………SQL.....

    经验 日期:2024-07-20

  • jvisualvm带插件,jconsole和jvisualvm区别jvisualvm带插件,jconsole和jvisualvm区别

    如何分析用javavisualvm打开的hprof文件/你的jdk安装目录的bin目录下有一个文件jvisualvmwindwosjvisualvm。exe,如何在xshell下查看jvisualvm?用SHH工具将下载的jvisualvm上传到服务器.....

    经验 日期:2024-07-20

  • 英国影像数据库有哪些,xorg和xorgserver怎么装英国影像数据库有哪些,xorg和xorgserver怎么装

    xorg和xorgserver怎么装2,韩国热门留学专业有哪些3,去日本留学学什么专业比较好4,日本留学的热门专业都有哪些5,DPI调高会给鼠标带来负荷吗1,xorg和xorgserver怎么装你的/etc/X11/xorg.conf.....

    经验 日期:2024-07-20

  • 标准数据库免费范围有哪些,数据库的应用范围标准数据库免费范围有哪些,数据库的应用范围

    数据库的应用范围2,关系型数据库系统由什么五部分组成3,sqlserver是免费的吗4,Python常用的标准库以及第三方库有哪些5,为系统扩展数据库采用什么设计方法1,数据库的应用范围数据库可以应用.....

    经验 日期:2024-07-20