Restrictions用法
|
HQL运算符 |
QBC运算符 |
含义 |
|
= |
Restrictions.eq() |
等于equal |
|
<> |
Restrictions.ne() |
不等于not equal |
|
> |
Restrictions.gt() |
大于greater than |
|
>= |
Restrictions.ge() |
大于等于greater than or equal |
|
< |
Restrictions.lt() |
小于less than |
|
<= |
Restrictions.le() |
小于等于less than or equal |
|
is null |
Restrictions.isnull() |
等于空值 |
|
is not null |
Restrictions.isNotNull() |
非空值 |
|
like |
Restrictions.like() |
字符串模式匹配 |
|
and |
Restrictions.and() |
逻辑与 |
|
and |
Restrictions.conjunction() |
逻辑与 |
|
or |
Restrictions.or() |
逻辑或 |
|
or |
Restrictions.disjunction() |
逻辑或 |
|
not |
Restrictions.not() |
逻辑非 |
|
in(列表) |
Restrictions.in() |
等于列表中的某一个值 |
|
not in(列表) |
Restrictions.not(Restrictions.in()) |
不等于列表中任意一个值 |
|
between x and y |
Restrictions.between() |
闭区间xy中的任意值 |
|
not between x and y |
Restrictions.not(Restrictions..between()) |
小于值X或者大于值y |
2,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();
}
public List findByCriteria(Object[] args) {
return HibernateSessionFactory
.getSession()
.createCriteria(Emp.class)
// and
.add(Restrictions.eq("id", 123))
.add(Restrictions.gt("hriedate", "1985-4-1"))
.add(Restrictions.ge("hriedate", "1985-4-1"))
.add(Restrictions.lt("hriedate", "1985-4-1"))
.add(Restrictions.le("hriedate", "1985-4-1"))
// or
.add(Restrictions.or(Restrictions.eq("id", 123),
Restrictions.gt("hriedate", "1985-4-1")))
// 多个or
.add(Restrictions.disjunction().add(Restrictions.eq("id", 123))
.add(Restrictions.gt("hriedate", "1985-4-1"))
.add(Restrictions.ge("hriedate", "1985-4-1")))
// 各种条件
.add(Restrictions.between("age", "19", "25"))
// 张(STRAT是张在开头(END是张在后头)(ANYWHERE任何位置)(EXACT严格匹配))%
.add(Restrictions.like("name", "zhang", MatchMode.START))
.add(Restrictions.ilike("name", "zhang"))
// 忽略大小写
.add(Restrictions.in("id", args))
.add(Restrictions.isEmpty("emps"))
// Dept.emps(针对集合) 没有员工的部门
.add(Restrictions.isNotEmpty("emps"))
.add(Restrictions.not(Restrictions.isEmpty("emps")))// 给某些不带一对的条件取反用的
.add(Restrictions.isNull("sal"))// sal is null
.add(Restrictions.isNotNull("sal"))// sal is not null
.add(Restrictions.sizeEq("emps", 5))// 查询部门人数等于 5个的
.add(Restrictions.eq("id", 5)).add(Restrictions.ne("id", 5))// 不等于5
.add(Restrictions.eqProperty("birthday", "hiredate"))// 两个属性相等,其他属性也一样F
.list();
}
}
Restrictions用法的更多相关文章
- Hibernate的 Restrictions用法
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...
- Hibernate的Restrictions用法
Restrictions.eq --> equal,等于. Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restri ...
- Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...
- hibernate Restrictions用法
QBC常用限定方法 Restrictions.eq --> equal,等于. Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相 ...
- hibernate Restrictions用法 HibernateTemplate Hibernate结合spring
常用方法 http://www.jb51.net/article/41541.htm ........................................... 博客分类: Hiberna ...
- Hibernate 马士兵 学习笔记 (转)
目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...
- Hibernate学习大全
第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7 第7课 ...
- Hibernate中Restrictions查询用法(转)
Restrictions查询用法 HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equa ...
- Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法
Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法 2016-10-10 16:52:38 ...
随机推荐
- 20170729xlVba SSC_RECENT100
Public Sub Recent100() Dim WebText As String Dim Reg As Object, Mh As Object, OneMh As Object Dim i ...
- 4-14-17 JavaScript知识点总结(包括JOSN, ajax等,来源w3c)
JavaScript 也称 ECMAScript as "JavaScript" It is designed to run as a scripting language in ...
- 谈谈http与https
今天简单的来说一下http和https, 简单来讲: HTTP 是 超文本协议,TCP 端口是 80 HTTPS 是一种配合了SSL协议的.加密的HTTP 协议 ,TCP端口是 443 HTTP ...
- hdu-6301-贪心
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- ABAP基础二:ALV基础之ALV的简单编辑
前两天有个打印需求变更,需要在ALV显示列表中添加两个字段,可编辑,而我自己用的是函数:REUSE_ALV_GRID_DISPLAY_LVC 因为之前做可编辑基本都是固定套路,定义类,画屏幕.... ...
- exec可以用来执行语句的
set @sql='select * from '+@table print @sql exec(@sql)
- 折叠菜单slideUp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- duilib 实现列表头任意拖动
1.表头(xml) <List name="List_records" padding="5,10,5,5" bkcolor="#FFFFFFF ...
- bzoj1617
题解: dp f[i]表示运i头奶牛需要的时间 f[i]=f[i-j]+a[i]+2*m 然后ans=f[n]-m(最后一次不用跑回来) 代码: #include<bits/stdc++.h&g ...
- sql server的远程连接
当一台服务器上的数据库需要用到另一台服务器上的数据库时,就需要远程连接 首先创建远程连接 exec sp_addlinkedserver linkname,'','SQLOLEDB',serverIP ...