JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法
Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤:
1. 通过session的createCriteria创建一个Criteria 对象
2. Criteria.add 增加约束。 在本例中增加一个对name的模糊查询(like)
3. 调用list()方法返回查询结果的集合
本文展示四种基本的Criteria查询用法
1.Criteria基本查询
2.Criteria条件查询
3.Criteria查询总数
4.Criteria查询用户名中带有字符'a'的总人数
package com.Gary.dao; import java.util.List; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class CriteriaDao { //Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件查询
public void search2() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList(); //打印出查询出来的第1个用户
System.out.println(resultList.get(0).getUsername()); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件总数记录查询
public void search3() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); //createQuery-->查询条件(首先需要知道查询什么类型数据)(数Integer Long)
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
//查找哪个表
Root<User> root = criteria.from(User.class);
criteria.select(criteriaBuilder.count(root));
//执行查询
Long count = session.createQuery(criteria).uniqueResult(); //查询总数
System.out.println(count); //模板:完成操作
beginTransaction.commit();
session.close();
} //查询名字中带有a的人数总数 -- 2
public void search4() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user where username like '%i%' CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
Root<User> root = criteria.from(User.class); criteria.select(criteriaBuilder.count(root)).where(criteriaBuilder.like(root.get("username"),"%a%")); Long count = session.createQuery(criteria).uniqueResult(); System.out.println(count); //模板:完成操作
beginTransaction.commit();
session.close();
} }
CriteriaDao.java
数据库user表

向数据库中添加假数据

1、Criteria基本查询
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
CriteriaDao.java向数据库发起查询请求
//Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
}

package com.Gary.dao; import java.util.List; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class CriteriaDao { //Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
} }
CriteriaDao.java
2、Criteria条件查询
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList();
CriteriaDao.java向数据库发起查询请求
public void search2() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction();
//模板:开始Criteria操作
//操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList();
//打印出查询出来的第1个用户
System.out.println(resultList.get(0).getUsername());
//模板:完成操作
beginTransaction.commit();
session.close();
}

package com.Gary.dao; import java.util.List; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class CriteriaDao { //Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
} public void search2() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList(); //打印出查询出来的第1个用户
System.out.println(resultList.get(0).getUsername()); //模板:完成操作
beginTransaction.commit();
session.close();
} }
CriteriaDao.java
3、Criteria查询总数
//createQuery-->查询条件(首先需要知道查询什么类型数据)(数Integer Long)
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
//查找哪个表
Root<User> root = criteria.from(User.class);
criteria.select(criteriaBuilder.count(root));
//执行查询
Long count = session.createQuery(criteria).uniqueResult();
CriteriaDao.java向数据库发起查询请求
public void search3() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction();
//模板:开始Criteria操作
//操作 select count(*) from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)(数Integer Long)
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
//查找哪个表
Root<User> root = criteria.from(User.class);
criteria.select(criteriaBuilder.count(root));
//执行查询
Long count = session.createQuery(criteria).uniqueResult();
//查询总数
System.out.println(count);
//模板:完成操作
beginTransaction.commit();
session.close();
}

package com.Gary.dao; import java.util.List; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class CriteriaDao { //Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件查询
public void search2() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList(); //打印出查询出来的第1个用户
System.out.println(resultList.get(0).getUsername()); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件总数记录查询
public void search3() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); //createQuery-->查询条件(首先需要知道查询什么类型数据)(数Integer Long)
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
//查找哪个表
Root<User> root = criteria.from(User.class);
criteria.select(criteriaBuilder.count(root));
//执行查询
Long count = session.createQuery(criteria).uniqueResult(); //查询总数
System.out.println(count); //模板:完成操作
beginTransaction.commit();
session.close();
} }
CriteriaDao.java
4、Criteria查询用户名中带有字符'a'的总人数
criteria.select(criteriaBuilder.count(root)).where(criteriaBuilder.like(root.get("username"),"%a%"));
CriteriaDao.java向数据库发起查询请求
//查询名字中带有a的人数总数 -- 2
public void search4() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user where username like '%i%' CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
Root<User> root = criteria.from(User.class); criteria.select(criteriaBuilder.count(root)).where(criteriaBuilder.like(root.get("username"),"%a%")); Long count = session.createQuery(criteria).uniqueResult(); System.out.println(); //模板:完成操作
beginTransaction.commit();
session.close();
}

package com.Gary.dao; import java.util.List; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class CriteriaDao { //Criteria基本查询
public void search() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);
Root<User> from = createQuery.from(User.class);
createQuery.select(from);
List<User> resultList = session.createQuery(createQuery).getResultList(); System.out.println(resultList); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件查询
public void search2() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select * from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
//createQuery-->查询条件(首先需要知道查询什么类型数据)
CriteriaQuery<User> criteria = criteriaBuilder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
//查询到数据库中所有值
criteria.select(root).where(root.get("id").in("1"));
//执行查询
List<User> resultList = session.createQuery(criteria).getResultList(); //打印出查询出来的第1个用户
System.out.println(resultList.get(0).getUsername()); //模板:完成操作
beginTransaction.commit();
session.close();
} //条件总数记录查询
public void search3() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); //createQuery-->查询条件(首先需要知道查询什么类型数据)(数Integer Long)
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
//查找哪个表
Root<User> root = criteria.from(User.class);
criteria.select(criteriaBuilder.count(root));
//执行查询
Long count = session.createQuery(criteria).uniqueResult(); //查询总数
System.out.println(count); //模板:完成操作
beginTransaction.commit();
session.close();
} //查询名字中带有a的人数总数 -- 2
public void search4() {
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始Criteria操作 //操作 select count(*) from user where username like '%i%' CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Long> criteria = criteriaBuilder.createQuery(Long.class);
Root<User> root = criteria.from(User.class); criteria.select(criteriaBuilder.count(root)).where(criteriaBuilder.like(root.get("username"),"%a%")); Long count = session.createQuery(criteria).uniqueResult(); System.out.println(count); //模板:完成操作
beginTransaction.commit();
session.close();
} }
CriteriaDao.java
JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法的更多相关文章
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法
本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法
HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- hibernate框架学习之数据查询(本地SQL)
本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...
- hibernate框架学习之数据查询(QBC)
lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 •获取Session对象 •初始化Criteria对象(使用Sessio ...
- hibernate框架学习之数据查询(QBC)helloworld
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hib ...
- hibernate框架学习之数据查询(HQL)helloworld
package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...
- (数据科学学习手册28)SQL server 2012中的查询语句汇总
一.简介 数据库管理系统(DBMS)最重要的功能就是提供数据查询,即用户根据实际需求对数据进行筛选,并以特定形式进行显示.在Microsoft SQL Serve 2012 中,可以使用通用的SELE ...
- JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
随机推荐
- MySQL 聚合函数(一)聚合(组合)函数概述
MySQL版本:5.7+ 本节介绍对值的集合进行操作的组合(聚合)函数.翻译自:Aggregate (GROUP BY) Function Descriptions 一.MySQL 5.7中的聚合函数 ...
- Spring源码解析 - springMVC核心代码
一.首先来讲解下springMVC的底层工作流程 1.首先我们重点放在前端控制器(DispatcherServlet) 其类图: 因为从流程图看,用户的请求最先到达就是DispatcherServle ...
- 6.SpringMVC 配置式开发-处理器
处理器除了实现Controller 接口外,还可以继承自一些其他的类,来完成一些特殊的功能 1.继承自AbstractController类 若处理器继承自AbstractController类,那么 ...
- RobHess的SIFT环境配置
平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32 参考博客:https://www.cnblogs.com/cql ...
- Dart 面向对象 类 方法
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...
- 前端基础(六):Bootstrap框架
Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局,并且 ...
- (二十四)Ubuntu16.04配置ADB调试环境
一.安装adb 1.可以通过 apt-get install android-tools-adb 来安装adb sudo add-apt-repository ppa:nilarimogard/web ...
- CentOS 7 系统初始化
0.安装系统基础依赖工具包 yum install net-tools gcc-c++ wget lrzsz vim ntpdate cronolog make psmisc 1.修改主机名 cent ...
- Oralce问题之Oracle ORA-28001:某用户密码过期
解决办法: (1).通过CMD打开命令行窗口,以sysdba连接数据库 SqlPlus / as sysdba (2).通过查询dba_user检查哪些用户过期 Sql>Select UserN ...
- CentOs Linux 对于 修改 yum源 为 阿里
修改yum源为阿里 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 2.获取阿里 ...