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. CUDA1.1-函数类型限定符与变量类型限定符

    这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...

  2. Eclipse利用Maven2搭建SpringMVC框架的Web工程

    一.准备工作: 下载apache-maven--> 配置Maven_home -->下载Eclipse Maven插件 二.新建工程:   选择新建Maven Project  arche ...

  3. 什么是viewport,为什么需要viewport

    viewport:视口,视觉窗口,显示区域.在显示面积上手机屏幕相对桌面显示器要小很多,在几年前(现在也如此)大部分网站都是为桌面显示器浏览而设计,很少考虑到适应手机屏幕,所以如果用手机浏览大多网站时 ...

  4. LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

    1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:d ...

  5. 各组对final发布产品的排名

    结果 排名 组名 项目简称 组长 平均 方差 1 新蜂 俄罗斯 武志远 2 0.80 2 天天向上 连连看 王森 2.50 1.90 3 奋斗吧兄弟 食物链 黄兴 2.83 0.97 4 金洲勇士 考 ...

  6. 线性表的链式存储C语言版

    #include <stdio.h> #include <malloc.h> #define N 10 typedef struct Node { int data; stru ...

  7. JVM垃圾收集器介绍

    垃圾回收算法是GC的方法论,垃圾收集器就是内存回收的具体实现. 一.Serial 收集器 单线程收集器,在进行GC时,必须暂停所有的工作线程(Stop The World),直到GC收集结束. 缺点: ...

  8. react 属性与状态 学习笔记

    知识点:1.react 属性的调用 this.props.被调用的属性名 设置属性的常用方法:var props = { one: '123', two: 321}调用这个属性:<HelloWo ...

  9. 线段树 poj3225

    U:把区间[l,r]覆盖成1I:把[-∞,l)(r,∞]覆盖成0    D:把区间[l,r]覆盖成0C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换S:[l,r]区间0/1互换 因 ...

  10. 网络流最小割 POJ 3469

    题意  2个CPU n个任务 给出在第一个 第二个运行时的花费 m  个  a  b 不在同一个CPU运行的额外花费 建图 源点 ->   n    -> 汇点 权          a1 ...