hibernate-criteria查询
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查询的更多相关文章
- Hibernate Criteria 查询使用
转载 http://blog.csdn.net/woshisap/article/details/6747466 Hibernate 设计了 CriteriaSpecification 作为 Crit ...
- hibernate Criteria查询多对多(Set集合)条件筛选
PO public class UserPO implements java.io.Serializable { /** 用户唯一标识ID */ private String id; /** 状态(在 ...
- hibernate Criteria查询 2.3
Criteria对象提供了一种面向对象的方式查询数据库.Criteria对象需要使用Session对象来获得一个Criteria对象表示对一个持久化类的查询 查询所有 Session session ...
- Hibernate框架之Criteria查询 和注解(重点☆☆☆☆☆,难点☆☆☆)
写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解 ...
- Hibernate框架之Criteria查询
首先给大家说说Hibernate检索方式 Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象 2.OID检索方式:按照对象的OID来检索对象 3.HQ ...
- Hibernate criteria 混合sql语句多表关联时查询注意事项
直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...
- Hibernate查询之Criteria查询
转自:http://www.cnblogs.com/Laupaul/archive/2012/02/15/2353194.html Criteria是一种比hql更面向对象的查询方式.Criteria ...
- hibernate框架学习笔记11:Criteria查询详解
创建实体类对象: package domain; import java.util.HashSet; import java.util.Set; //客户实体 public class Custome ...
- hibernate框架学习笔记7:HQL查询、Criteria查询简介
HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...
随机推荐
- .Net 异步方法加上“timeout”
在本羊读大学的时候,Thread让本羊云里雾里,代码写的痛不欲生,真的是让本羊脑袋里很多“线”缠绕在一起. 之后,Task让本羊代码写的飞起,甚至有时候根本不需要Task的时候还是要写上,那样显得档次 ...
- [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法
一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...
- 使用Redis做预定库存缓存功能
最近在自己的工作中,把其中一个PHP项目的缓存从以前的APC缓存逐渐切换到Redis中,并且根据Redis所支持的数据结构做了库存维护功能.缓存是在业务层做的,准确讲应该是在MVC模型中Model的O ...
- ASP.NET - SqlSugar ORM框架 更新列表
以后SqlSugar所有更新都会在这个贴子更新 SqlSugar是一款轻量级的MSSQL ORM ,除了具有媲美ADO的性能外还具有和EF相似简单易用的语法. 学习列表 0.功能更新 1.SqlSug ...
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,LZ今天给各位分享一 ...
- Sublime Text 必备插件
收集网址:http://segmentfault.com/a/1190000002748032
- java泛型中的对象
import java.util.HashMap; class Key { String s; Key(String s) { this.s = new String(s); } @Override ...
- Linux中TFTP使用详解
FTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现. linux服务器端tftp-server的配置1.安装tftp服务器需要安装xinetd(守护tftp).tftp和 ...
- Beta版本冲刺——day1
No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 培侨走的第4天,想他~( ...
- $(document).ready()和window.onload的区别
来源于: The window.onload event fires when a document is completely downloaded to the browser. This mea ...