1. Hibernate的Criteria这个东东,我觉得挺好的,它用于一个对象(也就是一张表)的各种查询非常好用,像:模糊查询,比较等等。(第一个是自己的,第二种是老陈的笔记)
以下是摘抄自课本上:
使用Criteria首先创建Criteria对象,与创建Query对象的语法很相似,但需要传入的参数是对应实体类的类型对象。然后使用Restrictions对象的静态方法(包括like,ge,gt,le,in等)构造查询条件,并添加进Criteria对象中。其中,like方法构造一个模糊查询的条件,第一个参数是参数名,第二个参数是查询条件的值,第三个参数是关键字匹配的方式,可选的有MatchMode.ANYWHERE,MatchMode.End,MatchMode.START和MatchMode.EXACT(精确查询)。ge表示构造大于等于的查询条件,gt则是大于,le则是小于等于,lt则是小于。最后,还可以通过Criteria的addOrder方法指定查询的排序方式。同样,分页查询的两个方法Criteria对象也支持,所以一般构造复杂的查询方法时候,我们采用Criteria的方式。
For Example:
//得到全部招聘信息
public static List getAllJob(long cid,long jobTypeId,long pd,String keyWord)
{
Session session=HibernateSessionFactory.getSession();
Criteria c=session.createCriteria(Job.class);
//取别名
c.createAlias("jobtype","jobtype");
c.createAlias("city","city");
if(cid!=0)
{
c.add(Restrictions.eq("city.id",cid));
}
if(jobTypeId!=0)
{
c.add(Restrictions.eq("jobtype.id",jobTypeId));
}
if(pd!=0)
{
//得到calendar实例,默认为当前时间
Calendar calendar=Calendar.getInstance();
//当前的日期减少pd天
calendar.add(Calendar.DAY_OF_MONTH, (int)-pd);
//得到前pd天的日期
Date date=calendar.getTime();
c.add(Restrictions.gt("publishdate",date));
}
if(!"".equals(keyWord))
{
c.add(Restrictions.like("title", keyWord,MatchMode.ANYWHERE));
}
List list=c.list();
session.close();
return list;
}
2.对象查询
1)对象查询只能够查询一个对象。也就是说对象查询不支持
关联查询
2)对象查询非常适合于对同一张表进行多条件查询
3)criteria的使用格式:
Session session=HibernateSessionFactory.getSession();
Criteria c=session.createCriteria(Emp.class);//创建一个实例
double minPay=3000;
double maxPay=5000;
//c.add(Restrictions.like("ename", "A",MatchMode.ANYWHERE));
//c.add(Restrictions.between("sal",minPay, maxPay));
//c.add(Restrictions.eq("job", "CLERK"));
c.add(Restrictions.eq("dept.dname", "SALES"));
List<Emp> empList=c.list();//返回的是一个对象集合
//没有加约束条件
for(Emp row:empList)
{
System.out.println(row.getEname());
}
4)criterian返回的永远都是对象集合
5)我要说话:
Criteria 的一个属性是关于另外一个对象的引用。那么我们就要
为这个属性创建别名
Session session=HibernateSessionFactory.getSession();
Criteria c=session.createCriteria(Emp.class);//创建一个实例
double minPay=3000;
double maxPay=5000;
//c.add(Restrictions.like("ename", "A",MatchMode.ANYWHERE));
//c.add(Restrictions.between("sal",minPay, maxPay));
//c.add(Restrictions.eq("job", "CLERK"));
c.createAlias("dept", "dept");//取别名
c.add(Restrictions.eq("dept.dname", "SALES"));
List<Emp> empList=c.list();//返回的是一个对象集合
//没有加约束条件
for(Emp row:empList)
{
System.out.println(row.getEname());
}
分享到:
相关推荐
三大最新流行框架整合,此实例包括了注册、查询、搜索、分页四大功能,适合入门的人学习,希望对你们有帮助。
Java_Hibernate QBC条件查询对比
hibernate中,对其中的查询方式进行总结,包括hql查询,条件查询,sql查询等
springMVC+hibernate的条件查询加分页的,如有不懂请,欢迎请教,本人刚学不久。
Hibernate条件查询Criteria.docHibernate条件查询Criteria.doc
Hibernate中使用Criteria Query各种QBC查询
Struts1.0+hibernate3.3登陆条件查询分页简单例子
Hibernate条件查询Criteria[参考].pdf
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。那些人很可恶啊
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。
Hibernate中关于Criteria查询条件的选择.doc
Hibernate实例开发 HQL 与 QBC 查询
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
Criteria查询将数据查询条件封装成为一个对象,可以堪称是传统SQL的对象化表示。
适用于初学者理解spring、springmvc、hibernate,使用oracle数据库,实现单表增删改查、条件查询和分页、文件上传
hibernate 条件查询实例
主从表关联+前台easyui+hibernate+struts2(条件查询)实现前端网页对后台的增删改查,前台网页是easyui界面,后台是struts2和hibernatede组合,前台页面也能够实现条件查询
这是我花费4天的时间做的北大青鸟Hibernate单元练习项目。...如何使用好Criteria限制查询条件、怎样用好和标签,怎样进行增加验证......经历过项目才会对知识有更深层次的掌握,本资料对初学者一定很有帮助。