1.条件查询,动态查询

public void conditionQuery(){
Session session=null;
try {
session=HibernateUtil.currentSession();
//准备查询条件,对第三方类进行封装
ConditionEmp cm=new ConditionEmp();
cm.setJob("教员");
cm.setSalary(1400D);
cm.setHireDateBegin(ConvertDate.strToDate("2000-11-11", "yyyy-MM-dd"));
cm.setHireDateEnd(ConvertDate.strToDate("2016-11-11", "yyyy-MM-dd")); //动态添加条件
Criteria c=session.createCriteria(Emp.class);
if(cm.getJob()!=null){
//工作选项不为空
c.add(Restrictions.ilike("job", cm.getJob(), MatchMode.ANYWHERE));
}
if(cm.getSalary()!=0){
c.add(Restrictions.gt("salary", cm.getSalary()));
}
if(cm.getHireDateBegin()!=null){
c.add(Restrictions.ge("hiredate", cm.getHireDateBegin()));
}
if(cm.getHireDateEnd()!=null){
c.add(Restrictions.le("hiredate", cm.getHireDateEnd()));
}
List<Emp> list=c.list();
for (Emp emp : list) {
System.out.println(emp.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

2.排序 分页 关联

 public void show(){
Session session=null;
try {
session=HibernateUtil.currentSession();
Criteria c=session.createCriteria(Emp.class);
// //查询工资高于某个范围,结果按照升序或者降序排列
//
// //添加条件
// List<Emp> list= c.add(Restrictions.gt("salary", 1500D)).addOrder(Order.desc("salary")).list();
//
// for (Emp emp : list) {
// System.out.println(emp.getName()+" "+emp.getSalary());
// } // //工资高于某个范畴,按照工资升序,在按照编号降序
// @SuppressWarnings("unchecked")
// List<Emp> list=c.add(Restrictions.gt("salary", 1500D)).
// addOrder(Order.asc("salary")).
// addOrder(Order.desc("id")).list();
// for (Emp emp : list) {
// System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
// } //查出工资最高的两个人
List<Emp> list=c.add(Restrictions.isNotNull("salary")).
addOrder(Order.desc("salary")).
setFirstResult(0).setMaxResults(2).list();
for (Emp emp : list) {
System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
} } catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

3.分页

 public void pageDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); Criteria c=session.createCriteria(Emp.class); //获取总记录
Integer count=(Integer) c.setProjection(Projections.rowCount()).uniqueResult();
//设置每页显示几条记录
int pageSize=4;
//计算总页数
int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1);
//清空查找总记录数时设置的投影
c.setProjection(null);
//页的索引
int pageIndex=1;
//设置从哪条记录开始,不包括输入的值
c.setFirstResult((pageIndex-1)*pageSize);
//设置查找的记录的总条数
c.setMaxResults(pageSize); List<Emp> list=c.list();
for (Emp emp : list) {
System.out.println(emp.getName());
} } catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

4.关联查询

 public void joinDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); // //查询包含指定字符的员工
// List<Emp> list=session.createCriteria(Emp.class).
// add(Restrictions.ilike("name", "王", MatchMode.ANYWHERE)).
// createCriteria("dept").add(Restrictions.eq("name", "开发部")).list();
// for (Emp emp : list) {
// System.out.println(emp.getName()+" "+emp.getDept().getName());
// } //查询工作所在地为某一部门的员工人数
List<Dept> list=session.createCriteria(Dept.class,"d").
setFetchMode("emps", FetchMode.JOIN).add(Restrictions.eq("d.name", "开发部")).list();
System.out.println(list.size());
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

5.投影

 public void projectionDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); // //查询员工的姓名和入职时间
// List<Object[]> list=session.createCriteria(Emp.class).
// setProjection(Projections.projectionList().
// add(Property.forName("name")).
// add(Property.forName("hiredate")))
// .list();
// for (Object[] obj : list) {
// System.out.println(obj[0]+" "+obj[1]);
// // new Date(((Timestamp)obj[1]).getTimestamp());
// } // //统计各部门的平均工资、最高工资、最低工资
// List<Object[]> list=session.createCriteria(Emp.class,"e").
// createAlias("e.dept", "d").
// setProjection(Projections.projectionList().
// add(Projections.groupProperty("d.name")).
// add(Projections.avg("salary")).
// add(Projections.max("salary")).
// add(Projections.min("salary"))).list();
// for (Object[] obj : list) {
// System.out.println(obj[0]+" "+obj[1]+" "+obj[2]+" "+obj[3]);
// } //使用DetachedCriteria
DetachedCriteria dc=DetachedCriteria.forClass(Emp.class,"e")
.createAlias("e.dept", "d").add(Restrictions.eq("d.name", "人事部"))
.add(Restrictions.ilike("e.name", "王",MatchMode.ANYWHERE)); //查询数据
List<Emp> list= dc.getExecutableCriteria(session).list();
for (Emp emp : list) {
System.out.println(emp.getName()+"---"+emp.getDept().getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

Cretiria查询应用(二)的更多相关文章

  1. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  2. SQL基础--查询之二--连接查询

    SQL基础--查询之二--连接查询

  3. MySQL慢查询(二) - pt-query-digest详解慢查询日志 pt-query-digest 慢日志分析

    随笔 - 66 文章 - 0 评论 - 19 MySQL慢查询(二) - pt-query-digest详解慢查询日志 一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它 ...

  4. 每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  5. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)

    前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...

  6. solr多条件查询(二)

    由于现在的 需求很变态需要N多条件的叠加,本人就用了一天时间摸索加求助,终于参透出这个q和fq的强大之处. 需求如下图,有三种关系:并且.或.不含 1.如果是或者也就是改变的q的查询条件: 2.如果是 ...

  7. Mysql查询(笔记二)

    1.两结构相同的表数据间移植 Inset into 表一 Select 字段1,字段2,....字段n from表二 建立数据库时设置数据库编码 create database 数据库名 charse ...

  8. MySQL慢查询(二) - pt-query-digest详解慢查询日志

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...

  9. Hibernate(十三):HQL查询(二)

    背景 基于上一章节<Hibernate(十二):HQL查询(一)>,已经学习了一部分关于HQL的用法: HQL带参数查询 HQL Order By排序查询 HQL 设置实体参数查询 本章节 ...

随机推荐

  1. angularjs自定义日期过滤器,如:周日(前天 21:24)

    今天给大家分享一个,我在项目中自定义的一个日期过滤器.具体过滤出来的效果可参看下图: 用法: {{ time | timeFilter }} filter: App.filter('timeFilte ...

  2. js十进制等互相转换

    //十进制转其他 var x=110; alert(x); alert(x.toString(8)); alert(x.toString(32)); alert(x.toString(16));  / ...

  3. Ajax是什么(转)

    原文:http://www.nowamagic.net/ajax/ajax_Production.php Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的 ...

  4. EDIT编辑框

    编辑框 编辑框的主要作用是让用户输入文本,例如要求用户在编辑框中输入密码的文本. .基础知识 编辑框里的文本可以是单行,也可以是多行,后者的风格取值为 ES_MULTILINE.一般对于多行文本编辑框 ...

  5. HIBERNATE 入门小案例

    刚刚开始肯定好多人都会问什么是hibernate呢? 那么下面我们就来了解一下什么事hibernate吧! 首先,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对 ...

  6. 实现Rsync同步Nginx前端配置

    近期,由于我们的阿里前端服务器频频受到恶意的流量攻击,导致前端NGINX进入黑洞而无法正常访问公司网站. 按之前的预计方法,采用加速乐及备用全配置前端的作法,将恶意短时流量攻击的损失时间降到最短.现将 ...

  7. 读、写SD上的文件请按如下步骤进行

    1.调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限.例如使用如下代码//Environment.getE ...

  8. 硝烟中的Scrum和XP-我们如何实施Scrum 4 (Part 1/2)

    4 制定Sprint计划 计划是Scrum中重要的一环; 是为了让团队获得足够信息, 不受打扰地工作, 增加团队的信心; Planning的成果: 1) Sprint目标 2) 团队成员名单(时间百分 ...

  9. 8.2.1.7 Use of Index Extensions 使用索引扩展

    8.2.1.7 Use of Index Extensions 使用索引扩展 InnoDB 自动扩展每个secondary index 通过添加primary key columns to it,考虑 ...

  10. 【HDOJ】1497 Simple Library Management System

    链表. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXM 1001 #def ...