HQL查询-hibernate Query Language(多表查询,但不复杂时使用)
Hibernate独家查询语言,属于面向对象的查询语言
基本查询
//1.书写hql语句 String hql=" from Customer"; //查询所有Customer对象 //2. 创建查询对象 Query query=session.createQuery(hql); //3. 根据查询对象获得查询结果 List<Customer> list= query.list(); // query.uniqueResult();//接收唯一的查询结果
- 条件查询
?号占位符
String hql=" from Customer where cust_id = ?";
Query query=session.createQuery(hql);
query.setParameter(0,1l);
Customer c=(Customer) query.uniqueResult();
命名占位符
String hql=" from Customer where cust_id = :cust_id ";
Query query=session.createQuery(hql);
query.setParameter("cust_id ",1l);
Customer c=(Customer) query.uniqueResult();
- 分页查询
String hql=" from Customer ";
Query query=session.createQuery(hql);
query.setFirstResult(1);//起始位置
query.setMaxResults(2);//读取几个值
List<Customer> list=query.list();
Criteria查询(单表条件查询)
Hibernate自创的无语句面向对象查询
- 基本查询
Criteria criteria=session.createCriteria(Customer.class);
List<Customer> list=criteria.list();
System.out.println(list);
- 条件查询
Criteria criteria=session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cust_id",1l));
Customer c=(Customer) criteria.uniqueResult();
System.out.println(c);
//HQL 语句中,不可能出现任何数据库相关的信息
// > gt
// >= ge
// < lt
// <= le
// == eq
// != ne
// in in
// between and between
// like like
// is not null isNotNull
// is null isNull
// or or
// and and
- 分页查询
Criteria criteria=session.createCriteria(Customer.class);
criteria.setFirstResult(1);//起始位置
criteria.setMaxResults(2);//读取几个值
List<Customer> list=criteria.list();
System.out.println(list);
- 设置查询总记录数
Criteria criteria=session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Long count=(Long) criteria.uniqueResult();
System.out.println(count);
原生SQL查询(复杂的业务查询)
- 基本查询
返回数组List
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String sql="select * from cst_customer";
SQLQuery query = session.createSQLQuery(sql);
List<Object []> list = query.list();
for(Object[] objs:list){
System.out.println(Arrays.toString(objs));
}
返回对象List
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String sql="select * from cst_customer";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Customer.class);
List<Customer> list = query.list();
System.out.println(list);
- 条件查询
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String sql="select * from cst_customer where cust_id = ? ";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter(0, 1l);
query.addEntity(Customer.class);
List<Customer> list = query.list();
System.out.println(list);
- 分页查询
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String sql="select * from cst_customer limit ?,? ";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter(0, 0); //第一个参数表示读取位置
query.setParameter(1, 1); //第二个参数表示读取个数
query.addEntity(Customer.class);
List<Customer> list = query.list();
System.out.println(list);