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核 ...
随机推荐
- element-ui组件dialog遇到form
Vue.js似乎成了一种潮流. UI框架element-ui也跟着成了一种潮流,不过得承认,至少我个人还是非常认可的,element-ui做的是真不错. 用到element-ui,那么在dialog中 ...
- 怎样使用yum安装nginx
yum install -y nginx 以上.
- 怎样在Chrome浏览器上安装 Vue Devtools 扩展程序
第一步: 前往 GitHub 下载 Vue Devtools 项目文件 https://github.com/vuejs/vue-devtools 注意: 1. 将分支切换为 master 2. 下载 ...
- _stscanf_s (sscanf)正则表达式
_stscanf_s (sscanf)正则表达式 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}, 注 ...
- C++性能榨汁机之无锁编程
C++性能榨汁机之无锁编程 来源 http://irootlee.com/juicer_lock_free/ 前言 私以为个人的技术水平应该是一个螺旋式上升的过程:先从书本去了解一个大概,然后在实践中 ...
- luogu题解 P3629 【[APIO2010]巡逻】树的直径变式
题目链接: https://www.luogu.org/problemnew/show/P3629 分析 最近被众多dalao暴虐,这道题傻逼地调了两天才知道错哪 不过这题比较良心给你一个容易发现性质 ...
- 检查一个string是否包含List<string>中的任意一个
bool b = listOfStrings.Any(s=>myString.Contains(s)); 应用在where子句中的示例: //获取路径 var groupPaths = grou ...
- oracle to_Char fm 函数
近期在使用oracle to_char函数处理浮点数时发现有坑,这里做个小结: 网上可以找到关于to_char中使用fm9990.0099中的相关解释: 0表示:如果参数(double或者float类 ...
- CDH5.16.1的kafka集群报错: No broker in ISR for partition [getngo_collect_apm_test,0]
1 详细错误 kafka.common.NoReplicaOnlineException: No broker in ISR for partition [getngo_collect_apm_tes ...
- SVN建立分支和合并代码
1.SVN建立分支正确SVN服务器上会有两个目录:trunk和branches.trunk目录下面代码就是所谓的主版本,而branches文件夹主要是用来放置分支版本.分支版本是依赖于主版本的,因此建 ...