package cn.itcast.h3.query.hql;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions; import cn.itcast.h3.query.hql.vo.StudentModel;
import cn.itcast.h3.query.hql.vo.TeacherModel;
import cn.itcast.util.HibernateUtil; //Criteria查询(QBC)
public class CriteriaApp {
// 简单查询
void testSimpleCriteria() {
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(TeacherModel.class);
List<TeacherModel> queryList = c.list();
for (TeacherModel tm : queryList) {
System.out.println(tm);
}
s.close();
} // 查询排序
void testCriteriaOrder() {
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(StudentModel.class);
c.addOrder(Order.asc("age"));
c.addOrder(Order.desc("studentName"));
List<StudentModel> queryList = c.list();
for (StudentModel tm : queryList) {
System.out.println(tm);
}
s.close();
} // 按条件查询
void testCriteriaCondition() {
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(StudentModel.class);
// 从上向下,全部默认为并且关系
// c.add(Restrictions.like("studentName", "%虎%"));
// c.add(Restrictions.gt("age", 22));
// 使用关系描述条件
// c.add(Restrictions.or(Restrictions.like("studentName", "%虎%"),
// Restrictions.lt("age", 22)));
// c.add(
// Restrictions.and(
// Restrictions.eq("aa", 123),
// Restrictions.and(
// Restrictions.lt("aa", 232),
// Restrictions.eq("", 123)
// )
// )
// ); List<StudentModel> queryList = c.list();
for (StudentModel tm : queryList) {
System.out.println(tm);
}
s.close();
} // 链式风格
void testCriteriaLink() {
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(StudentModel.class);
c.add(Restrictions.like("studentName", "%虎%")).add( Restrictions.gt("age", 22));
List<StudentModel> queryList = c.list();
for (StudentModel tm : queryList) {
System.out.println(tm);
}
s.close();
}
// 投影风格
void testCriteriaShadow() {
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(StudentModel.class);
// 投影单个字段
// c.setProjection(Property.forName("age"));
// List<Integer> queryList = c.list();
// for (Integer age : queryList) {
// System.out.println(age);
// }
// 投影多个字段
c.setProjection(
Projections.projectionList()
.add(Property.forName("studentName"))
.add(Property.forName("age"))
);
List<Object[]> queryList =c.list();
for(Object[] objs:queryList){
for(Object obj:objs){
System.out.println(obj);
}
System.out.println("----------------");
}
s.close();
}
//多表关联查询
void testMulQuery(){
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(StudentModel.class);
c.createAlias("teacher", "t");
c.add(Restrictions.eq("t.teacherName", "李若亮"));
List<StudentModel> queryList = c.list();
for (StudentModel tm : queryList) {
System.out.println(tm);
}
s.close();
}
//离线查询DetachedCriteria
void testDetachedCriteria(){
DetachedCriteria dc = DetachedCriteria.forClass(StudentModel.class);
dc.createAlias("teacher", "t");
dc.add(Restrictions.eq("t.teacherName", "雅典娜"));
//..一路传递到数据层 Session s = HibernateUtil.getSession();
Criteria c = dc.getExecutableCriteria(s);
List<StudentModel> queryList = c.list();
for (StudentModel tm : queryList) {
System.out.println(tm);
}
s.close();
} public static void main(String[] args) {
new CriteriaApp().testDetachedCriteria();
}
}

hibernate框架学习之数据查询(QBC)helloworld的更多相关文章

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

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

  2. hibernate框架学习之数据查询(QBC)

    lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 •获取Session对象 •初始化Criteria对象(使用Sessio ...

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

    package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...

  4. hibernate框架学习之数据查询(本地SQL)

    本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...

  5. hibernate框架学习之增删改查helloworld

    插入数据删除数据修改数据查询单条数据查询多条数据 HelloWorldApp.java package cn.itcast.h3.helloworld; import org.hibernate.Se ...

  6. hibernate框架学习之数据抓取(加载)策略helloworld

    package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Query; import org.hibern ...

  7. hibernate框架学习之数据抓取(加载)策略

    Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...

  8. Hibernate框架学习(五)——批量查询(概述)

    一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...

  9. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存

    QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...

随机推荐

  1. python 字符串 切片

    ####################概念######################''' int 整数 str 字符串 一般不存放大量的数据 bool 布尔值,用来判断. True,False ...

  2. PHP中的表单传值

     前言:试想一下如果PHP没有了表单传值,那么就相当于一个没有表达能力的人,因此表单传值在php中是相当重要的,但是不难,接下来我们一起来探讨一下吧------> (一)什么是表单传值 概念:表 ...

  3. java assert的用法简介【转】

    assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...

  4. MySQL数据库权限体系介绍

    本文主要向大家介绍了MySQL数据库权限体系,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mys ...

  5. HDU - 1255 覆盖的面积 (线段树求面积交)

    https://cn.vjudge.net/problem/HDU-1255 题意 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 分析 求面积并的题:https://www.cnbl ...

  6. 01.Redis 初体验

    0. Redis安装 官网下载Redis 解压缩 make make install 安装后的执行命令被保存在了/usr/local/bin目录下 1. 配置文件:redis.conf daemoni ...

  7. 【noip 2012】提高组Day1T3.开车旅行

    Description 小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市i 的海拔高度为Hi,城市i 和城市 ...

  8. 007_Reverse Integer

    ###solution1####small data # def reverse(x): # res=[] # t=0 # p=1 #记录位数 # y=x # if x<0: # x=-x # ...

  9. window中安装mongodb

    转自:https://blog.csdn.net/heshushun/article/details/77776706 一.先登录Mongodb官网https://www.mongodb.com/do ...

  10. html页面设置<span>的高度和宽度

    <span>标签属于行内元素(inline),所以无法设置高度和宽度:如果需要改变其宽高,就需要将其转变为块体元素(block)或行内块体元素(inle-block): 1 span{di ...