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核 ...
随机推荐
- sentinel与hystrix对比
近期有同事再提要不要使用sentinel.所以我就对现在已经用hystrix.先看两者的线程模型.大部分对比项是sentinel开源工程对比的,本人做了一些修改以及增加了一些对比项和说明. 从线程模型 ...
- 使用 FTP 迁移 SQL Server 数据_迁移数据_快速入门(SQL Server)_云数据库 RDS 版-阿里云
背景信息 阿里云数据库 SQL Server 版导入数据有如下限制: 仅支持导入 SQL Server 2005.SQL Server 2008.SQL Server 2008R2 版本数据 仅支持全 ...
- h5嵌套iframe实时传参(适用vue)
今天看到一个同事研究给iframe传参,由于好奇,我自己也写了个demo,说起来其实也挺简单的,但是在此之前没有用过,便想记录一下 其中主要用到的是postMessage 在页面中引入一个iframe ...
- debian上安装tmux
1.安装ncurses库 1.1.获取源码 wget https://invisible-island.net/datafiles/release/ncurses.tar.gz tar xvf ncu ...
- C和指针--链表
1.链表的基本概念 链表(linked list)是一些包含数据的节点的集合.链表中的每个节点通过链或指针连接在一起.程序通过指针访问链表中的节点.通常节点是动态分配的. 2.链表的分类 链表可分为: ...
- 【2017-06-16】Jquery获取dropdownlist选中的内容
var Text = $("#DropDownList1 option:selected").text(); 注意:DropDownList1和option之间有个空格!!!
- Linux学习笔记(三)Linux常用命令:链接命令和文件查找命令
一.链接命令 ln -s [原文件] [目标文件] (link) -s意为创建软连接 硬链接和软连接 硬链接的特点: (1)拥有相同的 i 结点和block块,可以看作是同一个文件 (2)可以通过 i ...
- linux下搭建redis内网端口映射工具-rinetd
最近在工作中使用到了redis缓存,用来提某些业务场景的计算速度和某些情况下的操作频率限制,客户端工具使用了redisDesktopmanager来管理,在本机操作测试的时候,是没有问题的.但是将系统 ...
- GetHashCode之于引用类型和值类型及其特性
GetHashCode 方法可由派生类型重写.如果 GetHashCode 未重写,则通过调用基类的 Object.GetHashCode 方法来计算引用类型的哈希代码. 引用类型:Object.Ge ...
- 使用pipenv管理你的python项目
怎么使用pipenv管理你的python项目 原文链接:https://robots.thoughtbot.com/how-to-manage-your-python-projects-with- ...