package com.etc.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

import com.etc.dao.HibernateSessionFactory;
import com.etc.entity.Person;
import com.etc.entity.Sex;

public class cri查询
{
static void 基础的cri查询()
{
//1 获取session连接
Session s = HibernateSessionFactory.getSession();

//2 获取Criteria对象(查询标准)
Criteria cri = s.createCriteria(Person.class);
//3 配置各种查询约束条件
//添加约束:pid等于1

cri.add(Restrictions.ge("pid", 2))
.add(Restrictions.like("pname", "老%"));

/*
Criteria cri2 = s.createCriteria(Sex.class);
cri2.add(Restrictions.sizeEq("persons", 3));
*/
//cri.add(Restrictions.or(Restrictions.ge("pid", 2), Restrictions.like("pname", "老%")));

//4 查询结果
/*
List<Sex> list = cri2.list();
for(Sex sex:list)
{
System.out.println(sex);
}
*/

List<Person> list = cri.list();
for(Person p:list)
{
System.out.println(p);
}


//5 关闭
HibernateSessionFactory.closeSession();
}

static void cri关联条件查询()
{
//例子:找出性别含有”未知“关键字的所有人
//1 获取session连接
Session s = HibernateSessionFactory.getSession();

//2 获取Criteria对象(查询标准)
Criteria cri1 = s.createCriteria(Person.class);

//3 创建关联对象的查询cri对象
Criteria cri2 = cri1.createCriteria("sex");

cri2.add(Restrictions.like("sexname", "%未知%"));

List<Person> list = cri1.list();
for(Person p:list)
{
System.out.println(p);
}
}

static void 离线查询()
{
//1 在未进行数据库连接时,创建离线查询的对象
DetachedCriteria dri = DetachedCriteria.forClass(Person.class);
dri.add(Restrictions.eq("pid", 2));

//2 一旦发现处于连接状态,则可将离线查询转出在线查询
Session s = HibernateSessionFactory.getSession();
Criteria cri = dri.getExecutableCriteria(s);

//3 执行查询
List<Person> list = cri.list();
for(Person p:list)
{
System.out.println(p);
}
}

public static void main(String[] args)
{
//基础的cri查询();
//cri关联条件查询();
离线查询();
}
}

hibernate----(Hql)另一种查询---利用Criteria类的更多相关文章

  1. Hibernate HQL中的子查询

    子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持.   如下面代码所示: List list=s ...

  2. Hibernate HQL和原生SQL查询的一点区别

    1.createSQLQuery 1.1默认查询的结果为BigDecimal 1.2通过addScalar("CGD_ID", StandardBasicTypes.LONG)可以 ...

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

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

  4. Hibernate框架之HQL查询与Criteria 查询的区别

    Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: ...

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

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

  6. 第六讲(二) Hibernate HQL查询

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibe ...

  7. Hibernate HQL查询:

    Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查 ...

  8. hibernate框架学习之数据查询(HQL)

    lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...

  9. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

随机推荐

  1. Windows Phone 8 显示当前项目的使用内存,最大峰值,最大内存上限

    public static class MemoryDiagnosticsHelper { public static bool isStart = false; static Popup popup ...

  2. Form表单提交的简要方式

    <html> <head> <meta name="viewport" content="width=device-width" ...

  3. js中各种宽度高度总结

    offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变 IE6.0.FF1.06+:offsetWidth = width + padding + borderoffsetH ...

  4. [转]java 输出流转输入流

    ByteArrayOutputStream.toByteArray ByteArrayInputStream StringWriter.toString StringReader 字符流和二进制流是j ...

  5. 桔子浏览器|1M安装包|hao123专属浏览器

    桔子浏览器是百度为好123打造的首页导航浏览器,体积小.为老年机上网提供便利. 免费下载:http://yunpan.cn/cmKbYXamEVUiY  访问密码 d270

  6. 【前端积累】createElement createTextNode

    <!DOCTYPE html> <html><!--树根--> <head> <meta charset="utf-8"> ...

  7. 2-ls 显示目录内容

    ls list directory contents 显示目录内容 [语法]: ls [选项] [参数] [功能介绍] ls指令用来显示目录列表,在Linux系统中有着较高的使用率.ls指令的输出信息 ...

  8. innerHTML和appendChild的性能

    目测innerHTML比appendChild好了3到4倍, 但是界面渲染还是很慢啊:  chrome结果 /** *chrome浏览器; * innerHTML appendChild * 1千条的 ...

  9. js-字符串转化日期

    endLogTimeDate = “2012-05-22 17:10:46” startLogTimeDate = “2012-05-22 17:10:46” var endLogTimeDate = ...

  10. 用 unoconv 将 xls 转换成 csv

    在 Linux 下,用 unoconv 将 xls 转换成 csv. unoconv -f csv -v input.xlsx