Criteria查询是Hibernate提供的一种查询方式

下面就一个员工和部门来列一个总体的例子

package Test;

import java.util.ArrayList;
import java.util.List; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.junit.Test; import com.sun.org.apache.regexp.internal.recompile; import entity.Dept;
import entity.Emp; import util.HibernateSessionFactory; public class TestCriteria {
/*
通过criteria查询部门信息
*/
@Test
public void test1(){
Session session =HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Dept.class);
List<Dept> list=criteria.list();
System.out.println("通过criteria查询部门信息");
for (Dept dept : list) {
System.out.println(dept.getDname());
}
} /**
* 查询位置在二楼的部门
*/
@Test
public void test2(){
Session session =HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Dept.class);
//.add(Restrictions.eq("loc", "二楼"));
Criterion criterion = Restrictions.eq("loc", "二楼");
criteria.add(criterion);
List<Dept> list=criteria.list();
System.out.println("查询位置在二楼的部门");
for (Dept dept : list) {
System.out.println(dept.getDname()+"\t"+dept.getLoc());
} } /**
* 查询工资高于2000元的员工
*/
@Test
public void test3(){
Session session =HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Emp.class)
.add(Restrictions.gt("sal", 2000D)); List<Emp> list=criteria.list();
System.out.println("查询工资高于2000元的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal());
} } /**
* 查询不属于任何部门的员工
*/
@Test
public void test4(){
Session session =HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Emp.class)
.add(Restrictions.isNull("dept")); List<Emp> list=criteria.list();
System.out.println("查询不属于任何部门的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal());
} } /**
* 查询职位是“MANAGER”的员工
*/
@Test
public void test5(){
Session session =HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Emp.class)
.add(Restrictions.eq("job", "MANAGER")); List<Emp> list=criteria.list();
System.out.println("查询职位是“MANAGER”的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getJob());
} }
/**
* 查询职位是“MANAGER”或“CLERK”的员工
*/
@Test
public void test6(){
Session session =HibernateSessionFactory.getSession();
List<String> joblist=new ArrayList<String>();
joblist.add("MANAGER");
joblist.add("CLERK");
Criteria criteria = session.createCriteria(Emp.class)
.add(Restrictions.in("job", joblist)); List<Emp> list=criteria.list();
System.out.println("查询职位是“MANAGER”或“CLERK”的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getJob());
} }
/**
* 查询工资在2000到5000元之间的员工
*/
@Test
public void test7(){
Session session =HibernateSessionFactory.getSession(); Criteria criteria = session.createCriteria(Emp.class)
//.add(Restrictions.ge("sal", 2000D))
//.add(Restrictions.le("sal", 5000D));
.add(Restrictions.between("sal", 2000D, 5000D));
List<Emp> list=criteria.list();
System.out.println("查询工资在2000到5000元之间的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal());
} }
/**
* 查询姓名中包括 “s”的员工
*/
@Test
public void test8(){
Session session =HibernateSessionFactory.getSession(); Criteria criteria = session.createCriteria(Emp.class)
//.add(Restrictions.like("ename", "%s%").ignoreCase());//忽略大小写
.add(Restrictions.like("ename", "s", MatchMode.ANYWHERE).ignoreCase());
List<Emp> list=criteria.list();
System.out.println("查询姓名中包括 “s”的员工");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal());
} } /**
* 查询职位是“analyser”或“accountant”的员工
*/
@Test
public void test9(){
Session session =HibernateSessionFactory.getSession(); Criteria criteria = session.createCriteria(Emp.class)
//两个or
//.add(Restrictions.or(Restrictions.eq("job", "CLERK"),
//Restrictions.eq("job", "SALESMAN")));
//三个
.add(Restrictions.disjunction()
.add(Restrictions.eq("job", "SALESMAN"))
.add(Restrictions.eq("job", "CLERK"))
.add(Restrictions.eq("job","MANAGER"))
);
List<Emp> list=criteria.list();
System.out.println("查询职位是“analyser”或“accountant”的员工--几种方法");
for (Emp emp : list) {
System.out.println(emp.getEname()+"\t"+emp.getSal()+"\t"+emp.getJob());
} } /**
* 查询没有员工的部门
*/
@Test
public void test10(){
Session session =HibernateSessionFactory.getSession(); Criteria criteria = session.createCriteria(Dept.class)
.add(Restrictions.isEmpty("emps"));
List<Dept> list=criteria.list();
System.out.println(" 查询没有员工的部门");
for (Dept dept : list) {
System.out.println(dept.getDname());
} } }

hibernate-criteria查询的更多相关文章

  1. Hibernate Criteria 查询使用

    转载 http://blog.csdn.net/woshisap/article/details/6747466 Hibernate 设计了 CriteriaSpecification 作为 Crit ...

  2. hibernate Criteria查询多对多(Set集合)条件筛选

    PO public class UserPO implements java.io.Serializable { /** 用户唯一标识ID */ private String id; /** 状态(在 ...

  3. hibernate Criteria查询 2.3

    Criteria对象提供了一种面向对象的方式查询数据库.Criteria对象需要使用Session对象来获得一个Criteria对象表示对一个持久化类的查询 查询所有 Session session ...

  4. Hibernate框架之Criteria查询 和注解(重点☆☆☆☆☆,难点☆☆☆)

    写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解 ...

  5. Hibernate框架之Criteria查询

    首先给大家说说Hibernate检索方式 Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象 2.OID检索方式:按照对象的OID来检索对象 3.HQ ...

  6. Hibernate criteria 混合sql语句多表关联时查询注意事项

    直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...

  7. Hibernate查询之Criteria查询

    转自:http://www.cnblogs.com/Laupaul/archive/2012/02/15/2353194.html Criteria是一种比hql更面向对象的查询方式.Criteria ...

  8. hibernate框架学习笔记11:Criteria查询详解

    创建实体类对象: package domain; import java.util.HashSet; import java.util.Set; //客户实体 public class Custome ...

  9. hibernate框架学习笔记7:HQL查询、Criteria查询简介

    HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...

  10. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

随机推荐

  1. 【AHOI2014复仇】

    RT,NOIP全挂,屌丝要逆袭……原本准备在QQ空间写,结果发现打不开,然后发现了这个……

  2. SEO站点优化学习总结

    1.网站收录查询 在搜索引擎里面输入Site:域名 即可. 尾巴——学习SEO可以看看以下几个网站: 卢松松博客[一个草根的博客]:http://lusongsong.com/ 站长之家[里面有站长统 ...

  3. 理解MySQL数据库覆盖索引

    话说有这么一个表: CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL, ...

  4. ssh全屏退出的办法

    在使用ssh的时候遇到,不知道碰到哪里了,突然xshell就全屏了 解决方法 按下键盘 Alt+Enter就好了

  5. HttpModule与HttpHandler详解

    ASP.NET对请求处理的过程:当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,A ...

  6. 【BZOJ 2555】SubString

    http://www.lydsy.com/JudgeOnline/problem.php?id=2555 一个字符串在原串中的出现次数就是这个字符串对应后缀自动机上的状态的\(|Right|\),要求 ...

  7. Boundary Representations

    用所有属于boundary的点来表示boundary, 有两个主要的缺点, 一是数据量大, 二是对噪声敏感. 用boundary的一些representation而非精确的boundary本身来表示b ...

  8. 51nod 1013快速幂 + 费马小定理

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n ...

  9. linux下mysql基础从安装到基本使用

    在LINUX下安装MYSQL #需要的安装包(按照先后顺序) libdbi-devel--2.1 libdbi--2.1 libdbi-drivers- perl-DBI-.el5 perl-DBD- ...

  10. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...