public class HibernateQBC {
//演示离线查询
@Test
public void testSelect6() {
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建对象
// 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) {
e.printStackTrace();
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 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置操作
criteria.setProjection(Projections.rowCount());
//3 调用方法得到结果
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
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 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置分页数据
//2.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) {
e.printStackTrace();
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 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置对哪个属性进行排序,设置排序规则
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) {
e.printStackTrace();
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 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 使用Criteria对象里面的方法设置条件值
// 首先使用add方法,表示设置条件值
// 在add方法里面使用类的方法实现条件设置
// 类似于 cid=?
// criteria.add(Restrictions.eq("cid", 1));
// 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) {
e.printStackTrace();
tx.rollback();
} finally {
session.close();
sessionFactory.close();
}
}
//演示查询所有
@Test
public void testSelect1() {
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建对象
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) {
e.printStackTrace();
tx.rollback();
} finally {
session.close();
sessionFactory.close();
}
}
}