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 ...
随机推荐
- 处理 EF 并发其实就这么简单
最近项目有点闲,终于可以了解点自己想了解的了,以前听同事讲面试的经历总会被问到“如何处理高并发大数据” 乍一听感觉这东西好像很有学问的样子,于是并发这个词在脑海里留深刻印像,而且在自己心中的技术地位也 ...
- Toxy新手指南
Neuzilla出品 官方网站:http://toxy.codeplex.com QQ群:297128022 官方微信公众号: Toxy 是干嘛用的?它是.NET平台上的文件抽取框架,主要解决各种格式 ...
- Libliner 中的-s 参数选择:primal 和dual
Libliner 中的-s 参数选择:primal 和dual LIBLINEAR的优化算法主要分为两大类,即求解原问题(primal problem)和对偶问题(dual problem).求解原问 ...
- BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启
对于解锁和锁屏这种用的比较频繁action,谷歌做了限制,必须手动用代码注册 直接上代码:这是注册广播(手动代码注册广播接收者) public class MainActivity extends A ...
- mycat 9066管理端口 常用命令
1.连接mycat 9066管理端口 命令:mysql -uroot -proot -P9066 -h127.0.0.1 -u:用户名 -p:密码 -P:端口 -h:ip地址例:linux路径切换到m ...
- easyui-datagrid 报错:TypeError: col is null
一般是由于设置的属性用到的列,如: idField:'aa', sortName:'bb' 等在 columns:[[{field:'cc',width:80,title:'列cc'}, {field ...
- 【转】C#判断奇偶数的函数
// 现代流行的"程序员" public static bool IsOdd(int n) { while (true) { switch (n) { : return true; ...
- C#-ade.net-实体类、数据访问类
实体类.数据访问类 是由封装演变而来,使对数据的访问更便捷,使用时只需要调用即可,无需再次编写代码 实体类是按照数据库表的结构封装起来的一个类 首先,新建文件夹 App_Code ,用于存放数据库类等 ...
- EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
实体框架System.Data.Entity.SqlServer提供者类型”. SqlProviderServices EntityFramework. 的在应用程序配置文件注册状态"置疑 ...
- 网络爬虫3-使用LIB_http库
LIB_http库提供了一个包装函数集,来简化复杂的PHP/CURL接口 1.http_get()函数,使用GET方法下载文件