原生SQL查询
1、基本查询
public void test() {
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//基本的原生SQL语句查询
String sql = "select * from cst_customer";
SQLQuery sqlQuery = session.createSQLQuery(sql);
List<Object[]> list = sqlQuery.list();
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
tx.commit();
session.close();
}
进阶,即将查询到的数据封装到指定对象中
public void test1(){
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//基本的原生SQL语句查询
//sql语句
String sql = "select * from cst_customer";
//根据sql语句创建sql语句
SQLQuery sqlQuery = session.createSQLQuery(sql);
//指定将结果集封装到指定的对象中
sqlQuery.addEntity(Customer.class);
List<Customer> list = sqlQuery.list();
System.out.println(list);
tx.commit();
session.close();
}
2、条件查询
@Test
public void test2(){
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//基本的原生SQL语句查询
//条件查询
//sql语句
String sql = "select * from cst_customer where cust_id = ?";
//根据sql语句创建sql语句
SQLQuery sqlQuery = session.createSQLQuery(sql);
//设置参数
sqlQuery.setParameter(1, 2l);
//指定将结果集封装到指定的对象中
sqlQuery.addEntity(Customer.class);
Customer customer = (Customer) sqlQuery.uniqueResult();
System.out.println(customer);
tx.commit();
session.close();
}
3、分页查询
public void test3(){
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//基本的原生SQL语句查询
//sql语句
String sql = "select * from cst_customer limit ?,?";
//根据sql语句创建sql语句
SQLQuery sqlQuery = session.createSQLQuery(sql);
//设置参数
sqlQuery.setParameter(1, 0);
sqlQuery.setParameter(2, 2);
//指定将结果集封装到指定的对象中
sqlQuery.addEntity(Customer.class);
List<Customer> list = sqlQuery.list();
System.out.println(list);
tx.commit();
session.close();
}
注意:
HQL查询,适合简单的多表查询
criteria查询,适合单表查询
原生Sql查询,适合复杂查询