hibernate框架学习之数据查询(QBC)helloworld
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的更多相关文章
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- hibernate框架学习之数据查询(QBC)
lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 •获取Session对象 •初始化Criteria对象(使用Sessio ...
- hibernate框架学习之数据查询(HQL)helloworld
package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...
- hibernate框架学习之数据查询(本地SQL)
本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...
- hibernate框架学习之增删改查helloworld
插入数据删除数据修改数据查询单条数据查询多条数据 HelloWorldApp.java package cn.itcast.h3.helloworld; import org.hibernate.Se ...
- hibernate框架学习之数据抓取(加载)策略helloworld
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Query; import org.hibern ...
- hibernate框架学习之数据抓取(加载)策略
Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...
- Hibernate框架学习(五)——批量查询(概述)
一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...
- hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...
随机推荐
- JAVA核心技术I---JAVA基础知识(单例模式和final关键字)
一:单例模式 C++设计模式中提及,不再赘述设计模式---对象性能模式之单例模式(Singleton) public class single{ static single Instance=new ...
- Dubbo服务的运行方式
1.使用Servlet容器运行(Tomcat.Jetty)等 ---不可取 缺点:增加复杂性(端口,管理) 浪费资源(内存) 2.自建Main方法类来运行(Spring容器) ---不建议(本地调试可 ...
- Expressions versus statements in JavaScript
Statements and expressions An expression produces a value and can be written wherever a value is exp ...
- HDU - 6444 Neko's loop(循环节+最大子段和)
http://acm.hdu.edu.cn/showproblem.php?pid=6444 题意 一个有n个数的环,每次循环走k步,走到每个点都有具体的权值,问在任意点出发最多走m步的情况下,一开始 ...
- [Android] [putty连接Android设备] [Android设备网络调试]
file: system/core/adb/adb.c line: 921 /* for the device, start the usb transport if the ** android u ...
- Python 生成requirement 使用requirements.txt安装类库
快速生成requirement.txt的安装文件 (CenterDesigner) xinghe@xinghe:~/PycharmProjects/CenterDesigner$ pip freeze ...
- namecheap域名设置Cloudflare为第三方DNS
待更……等我搞完了就来写总结
- 迅为开发板4412开发板-ANROID系统的烧写方法分享
详情了解: http://topeetboard.com 更多了解:https://arm-board.taobao.com 一.OTG接口烧写方式 通过该方式可以烧写 Android4.0.3 ...
- UOJ #276「清华集训2016」汽水
为什么你们常数都这么小啊 UOJ #276 题意:在树上找一条链使得|边权平均值$ -k$|尽量小,$ n<=5e4$ $ Solution:$ 首先二分答案$ ans$,即我们需要找一条链使得 ...
- Linux查看系统的基本信息
uname -r :显示操作系统的发行版号 uname -a:显示系统名.节点名称.操作系统的发行版号.操作系统版本.运行系统的机器 ID 号. # Ubuntu系统 ubuntu@VM-28-69- ...