`

hibernate Restrictions用法 MatchMode.ANYWHERE

 
阅读更多

方法

说明

Restrictions .eq

Restrictions .allEq

利用Map来进行多个等于的限制

Restrictions .gt

Restrictions .ge

>=

Restrictions .lt

Restrictions .le

<=

Restrictions .between

BETWEEN

Restrictions .like

LIKE

Restrictions .in

in

Restrictions .and

and

Restrictions .or

or

Restrictions .sqlRestriction

用SQL限定查询

 

 

QBC常用限定方法

Restrictions .eq --> equal,等于.

Restrictions .allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions .eq 的效果

Restrictions .gt --> great-than > 大于

Restrictions .ge --> great-equal >= 大于等于

Restrictions .lt --> less-than, < 小于

Restrictions .le --> less-equal <= 小于等于

Restrictions .between --> 对应SQL的between子句

Restrictions .like --> 对应SQL的LIKE子句

Restrictions .in --> 对应SQL的in子句

Restrictions .and --> and 关系

Restrictions .or --> or 关系

Restrictions .isNull --> 判断属性是否为空,为空则返回true

Restrictions .isNotNull --> 与isNull相反

Restrictions .sqlRestriction --> SQL限定的查询

Order.asc --> 根据传入的字段进行升序排序

Order.desc --> 根据传入的字段进行降序排序

MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"

MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"

MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"

MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'"

例子
查询年龄在20-30岁之间的所有学生对象
List list = session.createCriteria(Student.class)
       .add(Restrictions .between("age",new Integer(20),new Integer(30)).list();
查询学生姓名在AAA,BBB,CCC之间的学生对象
String[] names = {"AAA","BBB","CCC"};
List list = session.createCriteria(Student.class)
       .add(Restrictions .in("name",names)).list();
查询年龄为空的学生对象
List list = session.createCriteria(Student.class)
       .add(Restrictions .isNull("age")).list();
查询年龄等于20或者年龄为空的学生对象
List list = session.createCriteria(Student.class)
       .add(Restrictions .or(Restrictions .eq("age",new Integer(20)),
                 Restrictions .isNull("age")).list();

--------------------------------------------------------------------
使用QBC实现动态查询
public List findStudents(String name,int age){

Criteria criteria = session.createCriteria(Student.class);
if(name != null){
   criteria.add(Restrictions .liek("name",name,MatchMode.ANYWHERE));
}
if(age != 0){
   criteria.add(Restrictions .eq("age",new Integer(age)));
}
criteria.addOrder(Order.asc("name"));//根据名字升序排列
return criteria.list();
}

 

-----------------------------------------------------------------------------------

今天用了写hibernate 高级查询时用了Restrictions (当然Expression也是可以以的)这个类.感觉不错.
下面的代码写的不易读.其实核心就是一句
Restrictions .or(Restrictions .like(),Restrictions .or(Restrictions .like,........))
里面的or可以无限加的.还是比较好用

Session session = getHibernateTemplate().getSessionFactory()
                .openSession();
        Criteria criteria = session.createCriteria(Film.class);
        List<Film> list = criteria.add(
            Restrictions .or(Restrictions .like("description", key,MatchMode.ANYWHERE),
            Restrictions .or(Restrictions .like("name", key,MatchMode.ANYWHERE),
                Restrictions .or(    Restrictions .like("direct", key,MatchMode.ANYWHERE),
                Restrictions .or(Restrictions .like("mainplay",key,MatchMode.ANYWHERE),
                        Restrictions .like("filearea", key,MatchMode.ANYWHERE)))))).list();

        session.close();
        return list;

分享到:
评论

相关推荐

    Restrictions用法.docx

    criteria.add(Restrictions.like("name", nameKey, MatchMode.ANYWHERE)); List&lt;Student&gt; students = criteria.list(); ``` 此外,`Restrictions.sqlRestriction`允许我们直接使用SQL片段作为条件,但这种方式降低...

    Hibernate中Criteria的完整用法.docx

    然后可以设置一些过滤条件:Example exampleUser = Example.create(u) .ignoreCase() // 忽略大小写 .enableLike(MatchMode.ANYWHERE); // 对 String 类型的属性,无论在那里值在那里都匹配。相当于 %value% ...

    criterion简介

    * MatchMode.ANYWHERE:字符串在中间位置 * MatchMode.START:字符串在最前面的位置 * MatchMode.END:字符串在最后面的位置 这些方法可以根据需要组合使用,以实现复杂的查询条件。 Criterion 是 Hibernate 中的...

    hibernateCriteria查询

    这里使用`Restrictions.like("title", "%C%", MatchMode.ANYWHERE)` 来进行模糊查询,查找所有标题中包含"C#"的书籍。`MatchMode.ANYWHERE` 表示匹配任意位置的字符。 #### 五、排序 若要对查询结果进行排序,可以...

    Restrictions用法.pdf

    12. `MatchMode`: 用于`Restrictions.like`方法的模式匹配方式,包括: - `EXACT`: 精确匹配,相当于`LIKE 'value'` - `ANYWHERE`: 匹配任何位置,相当于`LIKE '%value%'` - `START`: 匹配开始位置,相当于`LIKE ...

    Hibernate的Criteria用法总结

    Example exampleUser = Example.create(u).ignoreCase().enableLike(MatchMode.ANYWHERE); ``` Projection接口用于处理查询结果,比如计算平均值、计数、最大值、最小值和求和。SimpleProjection和ProjectionList...

    Nhibernate的模糊查询

    `MatchMode.Start`表示关键词需匹配字段的开头,`MatchMode.End`则表示匹配结尾,`MatchMode.Anywhere`表示任意位置。 2. **NHibernate.Linq** 如果你更喜欢使用LINQ,可以通过`IQueryable`接口的`Where`方法结合...

    Criteria用法

    - 使用`like()`方法进行模糊匹配,`MatchMode.ANYWHERE`表示在任何位置匹配,例如:`crt.add(Restrictions.like("allFather", SystemForUserContext.getOrganizationRootNodeId(), MatchMode.ANYWHERE));...

    Hibernate - DetachedCriteria 的完整用法

    然后可以设置一些过滤条件,如 `ignoreCase()` 和 `enableLike(MatchMode.ANYWHERE)` 等。 Projection 主要是让 Criteria 能够进行报表查询,并可以实现分组。Projection 主要有 SimpleProjection、ProjectionList ...

    hibernate查询

    这里使用了 `Restrictions.like` 方法来实现模糊匹配,`MatchMode.ANYWHERE` 参数表示匹配字符串中的任意位置。 #### 四、QBE 查询 QBE 查询是一种基于示例对象来进行查询的方式,它允许开发者使用一个已知的对象...

    Hibernate中Criteria的完整用法

    然后可以设置一些过滤条件:Example exampleUser = Example.create(u) .ignoreCase() // 忽略大小写 .enableLike(MatchMode.ANYWHERE); // 对 String 类型的属性,无论在那里值在那里都匹配。相当于 %value% ...

    Hibernate中Criteria的使用

    然后可以设置一些过滤条件,例如 Example exampleUser = Example.create(u).ignoreCase().enableLike(MatchMode.ANYWHERE); // 忽略大小写, 对 String 类型的属性,无论在那里值在那里都匹配。 Projection 主要有 ...

Global site tag (gtag.js) - Google Analytics