文档详情

2、hibernate数据检索Criteria、HQL.ppt

发布:2018-04-26约5.27千字共18页下载文档
文本预览下载声明
Hibernate 基于MVC的Java Web开发 5、数据检索--Criteria 6、数据检索--HQL * * 数据检索-- Criteria Query Criteria Query是Hibernate提供的将SQL语句对象化表示的一种方法。条件查询(Criteria Queries)具有一个直观的、可扩展的条件查询API。 Criteria Query通过面向对象化的设计,将数据查询条件封装 为一个对象。 如: Criteria criteria = session.createCriteria(TUser.class); criteria.add(Expression.eq(“name,Erica)); criteria.add(Expression.eq(sex,new Integer(1))); 说明: 这里的criteria 实例实际上是SQL : “select * from t_user where name=’Erica’ and sex=1” 的封装(我们可以打开Hibernate 的show_sql 选项,以观察 Hibernate在运行期生成的SQL语句)。 数据检索-- Criteria 查询表达式 Criteria 本身只是一个查询容器,具体的查询条件需要通过 criteria.add方法添加到Criteria实例中。 如前例所示,Expression 对象具体描述了查询条件。针对SQL 语法,Expression提供了对应的查询限定机制,包括: 对应SQL中的 “field = value” 表达式 Expression.le 对应SQL中的 “field value” 表达式 Expression.lt 对应SQL中的 “field = value” 表达式 Expression.ge 对应SQL中的 “field value ” 表达式 Expression.gt 参数为一个Map对象,其中包含了多个属性- 值对应关系。相当于多个Expression.eq关系 的叠加。 Expression.allEq 对应SQL“field = value”表达式 如:Expression.eq(name,Erica) Expression.eq 用于比较两个属性之间的值,对应SQL中的“field= field”。 Expression.geProperty 用于比较两个属性之间的值,对应SQL中的“field field”。 Expression.gtProperty 用于比较两个属性之间的值,对应SQL中的“field = field”。如: Expression.eqProperty(TUser.groupID,TGroup.id ); Expression.eqProperty 对应SQL中的 ”field in …” 表达式 Expression.in 对应SQL中的 “field like value” 表达式 Expression.like 对应SQL中的 “between” 表达式 如:下面的表达式表示年龄(age)位于13到50区间内。           Expression.between(“age”,new Integer(13),new Integer(50)); Expression.between 作为补充,本方法提供了原生SQL语法的支持。我们可以通过这个方法直接通过SQL语句限定查询条件。 下面的代码返回所有名称以“Erica”起始的记录: Expression.sql(“lower({alias}.name) like lower(?)”,Erica%,Hibernate.STRING); 其中的“{alias}”将由Hibernate在运行期使用当前关联的POJO别名替换。 Expression.sql or关系组合。如:Expression.or(Expression.eq(name,Erica),Expression.eq(name,Emma)); Expression.or and关系组合。如:Expression.and(Expression.eq(name,Erica),Expression.eq(sex,new Integer(1))); Expression.and 用于比较两个属性之间的值,对应SQL中的“field= field”。 Expression.leProperty 用于比较两个属性之间的值,对应SQL中的“field field”。 Expression.ltProperty 数
显示全部
相似文档