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. Eclipse xml中自动提示,添加 dtd或xsd依赖

    下载DTD或XSD文件 添加到Eclipse

  2. MySQL备份工具之mysqldump使用

    MySQL备份工具之mysqldump使用说明 一.备份分类 根据能否停用数据库,将备份类型分为: 1. 冷备:数据库服务停止后备份 2. 温备:只能对数据库进行读操作,不能进行写操作 3. 热备:在 ...

  3. 2018牛客网暑期ACM多校训练营(第二场)G Transform(二分)

    题意 在一个数轴上有n个集装箱,第 i 个集装箱的位置为x[i],且在集装箱内装有a[i]件货物,现在将这些集装箱内的货物进行移动(将一件货物从第 i 个集装箱移动到第 j 个集装箱的花费就为2*ab ...

  4. LGV 算法 (Lindström–Gessel–Viennot lemma)

    e(ai,bi)为从起点ai到终点bi的方案数.以上矩阵行列式结果就是(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数. 具体证明的话看wiki,比较长.. 这个定理 ...

  5. Linux命令(十四)gdb调试

    1. gdb调试 fun.c #include <stdio.h> #include "head.h" int sum(int a, int b) { printf(& ...

  6. 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录

    官方文档:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 一.最简单安装: apt-get install ffmpeg 二.安装最新版本 大 ...

  7. 032、学容器必须懂bridge网络(2019-02-19 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7066851.html   docker安装时会创建一个名为 docker0 的linuxbridge.如果不指定 --n ...

  8. Python Thrift 简单示例

    本文基于Thrift-0.10,使用Python实现服务器端,使用Java实现客户端,演示了Thrift RPC调用示例.Java客户端提供两个字符串参数,Python服务器端计算这两个字符串的相似度 ...

  9. python 之模块random

    随机形成字母和数字组成的五位字符码. [root@localhost python]# vim timee.py import random def coder(): code = '' for i ...

  10. Python18 Django 基础

    本节内容 上节项目基础语法补充 Django请求的生命周期 通过这张图,我们可以很好的解释一下这个问题. Django请求的生命周期是由客户端的请求开始:经由路由系统找到相对应的视图函数:视图函数到h ...