Hibernate的查询方式
- 对象导航查询
- OID查询
- HQL单表查询
1)查询所有
2)条件查询
3)排序查询
4)分页查询
5)投影查询
6)聚合函数查询 - QBC查询
1)查询所有
2)条件查询
3)排序查询
4)分页查询
5)统计查询(实质是聚合函数查询,封装成了具体的方法实现)
6)离线查询 - HQL多表查询
1)内连接查询
2)迫切内连接查询
3)左(右)外连接查询
4)迫切左(右)外连接查询
对象导航查询
@Test
public void fun1(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Customer customer = session.get(Customer.class, 1);
Set<LinkMan> setLinkMan = customer.getSetLinkMan();
System.out.println(setLinkMan.size());
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
OID查询
@Test
public void fun2(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Customer customer = session.get(Customer.class, 1);
System.out.println(customer);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
HQL单表查询
查询所有
@Test
public void fun1(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer");
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
条件查询
@Test
public void fun2(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer where cid=?");
query.setParameter(0, 1);
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
模糊查询
@Test
public void fun3(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer where custName like ?");
query.setParameter(0, "%D%");
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
排序查询
@Test
public void fun4(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer order by cid desc");
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
分页查询
@Test
public void fun5(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer");
query.setFirstResult(0);
query.setMaxResults(2);
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
投影查询
@Test
public void fun6(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("select custName from Customer");
List<Object> list = query.list();
for (Object object : list) {
System.out.println(object);
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
聚集函数查询
@Test
public void fun7(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("select count(*) from Customer");
Object object = query.uniqueResult();
System.out.println(object);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
QBC查询
查询所有
@Test
public void fun1(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
条件查询
@Test
public void fun2(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cid", 1));
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
模糊查询
@Test
public void fun3(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.like("custName", "%D%"));
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
排序查询
@Test
public void fun4(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.addOrder(Order.desc("cid"));
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
分页查询
@Test
public void fun5(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.setFirstResult(0);
criteria.setMaxResults(2);
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + "::" + customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
统计
@Test
public void fun6(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Object object = criteria.uniqueResult();
System.out.println(object);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
离线查询
@Test
public void fun7(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
List<Customer> list = criteria.list();
for (Customer customer : list) {
System.out.println(customer.getCustName());
}
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
HQL多表查询
内连接查询
@Test
public void fun1(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer c inner join c.setLinkMan");
List<Object[]> list = query.list();
System.out.println(list.size());
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
迫切内连接查询
@Test
public void fun2(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer c inner join fetch c.setLinkMan");
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCustName());
}
System.out.println(list.size());
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
左(右)外连接查询
@Test
public void fun3(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer c left outer join c.setLinkMan");
List list = query.list();
System.out.println(list.size());
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}
迫切左(右)外连接查询
@Test
public void fun4(){
Session session = null;
SessionFactory sessionFactory = null;
Transaction transaction = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("from Customer c left outer join fetch c.setLinkMan");
List list = query.list();
System.out.println(list.size());
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
session.close();
sessionFactory.close();
}
}