hibernate的多条件查询——Criteria Query的应用
来源:互联网 发布:2016淘宝返利网排名 编辑:程序博客网 时间:2024/05/19 13:42
查询数据时,人们往往需要设置查询条件。在SQL或HQL语句中,查询条件常常放在where子句中。此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象。在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Criteria实例中。这样,程序员可以不使用SQL甚至HQL的情况下进行数据查询。
先看一个简单的例子:
Criteria cr = session.createCriteria(Student.class); //生成一个Criteria对象
cr.add(Restrictions.eq("name", "xy")); //等价于where name=’xy’
List list = cr.list();
我们来看运算符这样一个对比。
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
Criteria什么时候威力最大呢?就是多条件查询的时候。
视图是这样:
学号<input type="text" name="dto.num" />
姓名<input type="text" name="dto.name" />
<input type="submit" value="查询" />
我们可以这样做:
Entity层
public class Student
{
private int id;
private String name;
private Date birth;
...........
}
DTO层
public class StudentDto
{
private int id; // 学生编号
private String name;// 学生姓名
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
Impl层
public PageModel getQqueryResult(StudentDto dto, int start, int pagesize)
{
Criteria c = this.getSession().createCriteria(Student.class);
if (0 != dto.getId())
{
c.add(Restrictions.like("id", dto.getId()));
}
if (null != dto.getName() && !"".equals(dto.getName()))
{
c.add(Restrictions.like("xm", "%" + dto.getName() + "%"));
}
int count = c.list().size();
List datas = c.setFirstResult(start).setMaxResults(pagesize).list();
int totalPage = helper.totalPage(count, pagesize);
// 得到结果集
PageModel pm = new PageModel();
pm.setTotal(count);
pm.setDatas(datas);
pm.setTotalPage(totalPage);
return pm;
}
.......下面就涉及到Struts和SSH分页的知识了,在这里就不多赘述了。^ ^
参考地址:http://blog.csdn.net/dengqf/article/details/6603531
- hibernate的多条件查询——Criteria Query的应用
- Hibernate条件查询(Criteria Query)
- Hibernate条件查询(Criteria Query)
- Hibernate条件查询(Criteria Query)
- Hibernate条件查询(Criteria Query)
- Hibernate条件查询(Criteria Query)
- Hibernate 的查询语言 Criteria 和Query
- hibernate参考手册之---条件查询(Criteria Query)
- [转]Hibernate条件查询(Criteria Query)
- Hibernate动态条件查询(Criteria Query)
- hibernate的Criteria Query
- Hibernate的Criteria Query
- Hibernate 的Criteria Query
- Hibernate中Criteria的使用(条件查询)
- 05-Hibernate的条件查询Criteria
- hibernate中的Query查询和criteria查询的区别
- 使用hibernate复杂的条件查询和Criteria联表查询应用
- hibernate的Criteria Query[转]
- HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
- 《那些年啊,那些事——一个程序员的奋斗史》——65
- 多线程操作UI
- 少妇、伟哥与猪之间不得不说的经济故事
- pl022调试备忘
- hibernate的多条件查询——Criteria Query的应用
- Notification Manager 总结
- 当session过期,跳出iframe框架到登录页面?
- VB内部控件总结(三)
- 求解:为什么会出现错误代码?
- 螺旋打印数字矩阵
- 下载数据库文件时会出现中文文件名乱码,解决方法
- mmap 的理解
- 测试技术汇总