Hibernate的Query、Criteria、SQLQuery对象使用
Query对象
1 使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似
(2)hql和sql语句区别:
- 使用sql操作表和表字段
- 使用hql操作实体类和属性
2 查询所有hql语句:
(1)from 实体类名称
3 Query对象使用
(1)创建Query对象
(2)调用query对象里面的方法得到结果
SessionFactory sessionFactory = HibernateUtils.getSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); @Test public void QueryDemo(){ try { //创建jquery对象 //方法里写hql语句 Query query = session.createQuery("from User"); //调用query对象里面的方法得到结果 List<User> list = query.list(); for (User user : list) { System.out.println(user); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ session.close(); sessionFactory.close(); } }
Criteria对象
1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
2 实现过程
(1)创建criteria对象
(2)调用对象里面的方法得到结果
try { //创建CriteraDemo对象 //方法里面的参数是实体类class Criteria criteria = session.createCriteria(User.class); //调用方法得到结果 List<User> list = criteria.list(); for (User user : list) { System.out.println(user); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ session.close(); sessionFactory.close(); }
SQLQuery对象
1 使用hibernate时候,调用底层sql实现
2 实现过程
(1)创建对象
(2)调用对象的方法得到结果
返回list集合每部分是数组
try { //创建对象 //参数普通sql语句 SQLQuery sqlQuery = session.createSQLQuery("select * from t_user1"); //调用sqlQuery里面的方法 //返回list集合,默认里面每部分数组结构 List<Object[]> list = sqlQuery.list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ session.close(); sessionFactory.close(); }
返回list中每部分是对象形式
try { //创建对象 //参数普通sql语句 SQLQuery sqlQuery = session.createSQLQuery("select username='胡静' from t_user1"); //返回的list中每部分是对象形式 sqlQuery.addEntity(User.class); //调用sqlQuery里面的方法 List<User> list = sqlQuery.list(); for (User user : list) { System.out.println(user); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ session.close(); sessionFactory.close(); }