08_QBC查询(查询所有)
QBC查询
1 使用hql查询需要写hql语句实现,但是使用qbc时候,不需要写语句了,使用方法实现
2 使用qbc时候,操作实体类和属性
3 使用qbc,使用Criteria对象实现
查询所有
1 创建Criteria对象
2 调用方法得到结果
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//2 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
09_QBC查询(条件查询)
1 没有语句,使用封装的方法实现
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cid", 2));
criteria.add(Restrictions.eq("custName", "阿里巴巴"));
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
模糊查询:
// 条件查询
@Test
public void testSelect2(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
// criteria.add(Restrictions.eq("cid", 2));
// criteria.add(Restrictions.eq("custName", "阿里巴巴"));
criteria.add(Restrictions.like("custName", "%里%"));
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
排序查询
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//criteria.addOrder(Order.asc("cid"));
criteria.addOrder(Order.desc("cid"));
//3 调用方法得到结果
List<Customer> list = criteria.list();
分页查询
// 分页
@Test
public void testSelect4(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置分页数据
//2.1设置开始位置
//开始位置计算公式:(当前页-1)*每页记录数
criteria.setFirstResult(0);
//2.2设置每页显示记录数
criteria.setMaxResults(3);
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);
// 统计
@Test
public void testSelect5(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
//1 创建query对象
//Criteria criteria = session.createCriteria(Customer.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
//2 最终执行的时候才需要到session
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
所有代码:com.hlg.hibernatetest.HibernateQBC
package com.hlg.hibernatetest;
import java.util.List;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import com.hlg.entity.Customer;
import com.hlg.entity.LinkMan;
import com.hlg.utils.HibernateUtils;
public class HibernateQBC {
// 查询所有
@Test
public void testSelect1(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//2 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
// 条件查询
@Test
public void testSelect2(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
// criteria.add(Restrictions.eq("cid", 2));
// criteria.add(Restrictions.eq("custName", "阿里巴巴"));
criteria.add(Restrictions.like("custName", "%里%"));
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
// 排序
@Test
public void testSelect3(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//criteria.addOrder(Order.asc("cid"));
criteria.addOrder(Order.desc("cid"));
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
// 分页
@Test
public void testSelect4(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置分页数据
//2.1设置开始位置
//开始位置计算公式:(当前页-1)*每页记录数
criteria.setFirstResult(0);
//2.2设置每页显示记录数
criteria.setMaxResults(3);
//3 调用方法得到结果
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
// 统计
@Test
public void testSelect5(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
// 离线查询
@Test
public void testSelect6(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
//Criteria criteria = session.createCriteria(Customer.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
//2 最终执行的时候才需要到session
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+":::"+customer.getCustName());
}
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
}