Hibernate一共有四种查询方式:
主键查询,HQL查询(hibernate特有的查询(实体)),QBC查询(完全面向对象的查询(实体)),SQL查询(数据库表)
package cn.itcast.hello;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
public class AppTest3 {
private static SessionFactory factory;
static{
factory=new Configuration().configure().buildSessionFactory();//链式调用
}
//主键查询
@Test
public void testQueryById(){
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//主键查询
Employee emp = (Employee) session.get(Employee.class, 1);
System.out.println(emp);
transaction.commit();
session.close();
}
//HQL查询
@Test
public void testQuery(){
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from Employee");//这里是JavaBean中的属性不是数据库的
List list = query.list();
System.out.println(list);
transaction.commit();
session.close();
}
//完全面向对象的查询
@Test
public void testQBC(){
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Employee.class);
//条件
criteria.add(Restrictions.eq("empName", "韩玮"));
List list = criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}
@Test
public void testSQL(){
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//把查询的每一行记录封装成对象添加到集合中
SQLQuery query = session.createSQLQuery("select * from employee").addEntity(Employee.class);
List list = query.list();
System.out.println(list);
transaction.commit();
session.close();
}
}
运行结果一致:
Hibernate: select employee0_.id as id0_0_, employee0_.empName as empName0_0_, employee0_.workDate as workDate0_0_ from employee employee0_ where employee0_.id=?
Employee [id=1, empName=韩玮, workDate=2015-07-26 23:07:29.0]