Criteria对象提供了一种面向对象的方式查询数据库。
Criteria对象需要使用Session对象来获得一个Criteria对象表示对一个
持久化类的查询

查询所有

    Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class);
List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit();

where

//1
Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class); //条件
cri.add(Restrictions.eq("username", "u1")); List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit();
//2 Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class); //条件 这是and效果
cri.add(Restrictions.eq("username", "u1"));
cri.add(Restrictions.eq("password","123")); List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit();
//3 Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class); //条件 这是or效果
cri.add(Restrictions.or(Restrictions.eq("username", "u1"),Restrictions.eq("username", "jack"))); List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit(); // like Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class);
/*MatchMode.ANYWHERE任何地方 MatchMode.START从开始 MatchMode.END表示u结尾的*/
cri.add(Restrictions.like("username", "u", MatchMode.ANYWHERE)); List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit();

分页

cri.setFirstResult(0);
cri.setMaxResults(5);

分组与统计

Creteria cri = session createCriteria(User.class);
cri.setProjection(Projections.count("id"));
Long count = (Long)cri.uniqueResult();
syso(count);

多个统计与分组 

Creteria cri = session createCriteria(User.class);
ProjectionList pList = Projections.projectionList();
pList.add(Projections.max("id"));
pList.add(Projections.min("id")); cri.setProjection(pList); Object[] array = (Object[]) cri.uniqueResult();
System.out.println(array[0] + " : " +array[1]);

排序 

Session session = HibernateUtil.getSession();
session.beginTransaction();
Criteria cri = session.createCriteria(User.class); cri.addOrder(Order.desc("id"));
cri.addOrder(Order.asc("username")); List<User> list = cri.list();
for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}
session.getTransaction().commit();

------------------------------------------------

------------------------------------------------

当然也可以使用原生sql

Session session = HibernateUtil.getSession();
session.beginTransaction(); String sql = "select * from user";
SQLQuery query = session.createSQLQuery(sql);
List<Object[]> list = query.list(); for(Object[] array : list) {
System.out.println(array[0] + " : " + array[1]);
} String sql = "select * from user";
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class);
List<User> list = query.list(); for(User user : list) {
System.out.println(user.getId() + " : " + user.getUsername());
}

hibernate Criteria查询 2.3的更多相关文章

  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查询 和注解(重点☆☆☆☆☆,难点☆☆☆)

    写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解 ...

  4. Hibernate框架之Criteria查询

    首先给大家说说Hibernate检索方式 Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象 2.OID检索方式:按照对象的OID来检索对象 3.HQ ...

  5. Hibernate criteria 混合sql语句多表关联时查询注意事项

    直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...

  6. Hibernate查询之Criteria查询

    转自:http://www.cnblogs.com/Laupaul/archive/2012/02/15/2353194.html Criteria是一种比hql更面向对象的查询方式.Criteria ...

  7. hibernate框架学习笔记11:Criteria查询详解

    创建实体类对象: package domain; import java.util.HashSet; import java.util.Set; //客户实体 public class Custome ...

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

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

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

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

随机推荐

  1. Spoj 2713 Can you answer these queries IV 水线段树

    题目链接:点击打开链接 题意: 给定n长的序列 以下2个操作 0 x y 给[x,y]区间每一个数都 sqrt 1 x y 问[x, y] 区间和 #include <stdio.h> # ...

  2. BootStrap 智能表单系列 九 表单图片上传的支持

    本章介绍如何在生成表单后,可以支持上传图片后可以及时预览图片 代码如下(连接地址:https://github.com/xiexingen/Bootstrap-SmartForm/blob/maste ...

  3. .NET 多语言支持解决方案 (转)

    asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面. 首先在App_GlobalResources新建re ...

  4. UVA1471( LIS变形)

    这是LIS的变形,题意是求一个序列中去掉某个连续的序列后,能得到的最长连续递增序列的长度. 用DP的解法是:吧这个序列用数组a来记录,再分别用两个数组f记录以i结尾的最长连续递增序列的长度,g[i]记 ...

  5. Java学习之异常处理

    在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性.       Throwabl ...

  6. jquery选择器:nth-child()与空格:eq() 的区别;

    在一个7x7的表格当中 nth-child(1); td.parents("table").find("tr :nth-child(1)").css(" ...

  7. oracle 11g 物理内存 - 此先决条件将测试系统物理内存总量是否至少为 922MB (944128.0KB)

  8. hdu 4638 Group 莫队算法

    题目链接 很裸的莫队, 就不多说了... #include<bits/stdc++.h> using namespace std; #define pb(x) push_back(x) # ...

  9. ASP.Net MVC3 - The easier to run Unit Tests by moq #Reprinted#

    From: http://www.cnblogs.com/techborther/archive/2012/01/10/2317998.html 前几天调查完了unity.现在给我的任务是让我调查Mo ...

  10. 读书笔记: nodejs API 参考

    >> bufferBuffer对象是全局对象Buffer支持的编码方式:ascii, utf8, base64, binarynew Buffer(size)new Buffer(arra ...