1、使用Query对象,不须要写sql语句,可是要写hql语句】java
1.hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似sql
2.hql和sql语句的区别数据库
-使用sql语句是操做数据库表和字段的数组
-使用hql语句是操做实体类和属性的session
3.查询全部属性的hql语句工具
①from+实体类名称【sql语句:select * from 表名】测试
4.Query对象的使用spa
①建立Query对象hibernate
②调用query对象里面的方法获得结果code
package com.lk.hibernate2.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.Query; import com.lk.hibernate2.entity.User; import com.lk.hibernate2.util.HibernateUtil; /** * 测试Hibernate查询的方法 * @author Administrator * */ public class Test { @org.junit.Test public void test() { Session session=null; Transaction transaction=null; try{ //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做业务 //1.建立一个query对象 Query query=session.createQuery("from User"); //2.调用query的list()方法返回值是一个List类型的 List<User> list=query.list(); //循环输出值 for (User user : list) { System.out.println(user); } //提交事务 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事务回滚 transaction.rollback(); }finally{ //关闭方法 HibernateUtil.close(); } } }
2、Criteria对象
1.使用这个对象查询操做不须要写查询语句,直接调用方法就能够实现
2.实现的过程
①建立Criteria对象
②调用Criteria里面的方法
@org.junit.Test public void testCriteria() { Session session=null; Transaction transaction=null; try{ //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做业务 //1.建立一个Criteria对象 Criteria criteria=session.createCriteria(User.class); //2.调用Criteria的list()方法返回值是一个List类型的 List<User> list=criteria.list(); //循环输出值 for (User user : list) { System.out.println(user); } //提交事务 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事务回滚 transaction.rollback(); }finally{ //关闭方法 HibernateUtil.close(); } }
3、SQLQuery对象查询
1.使用hibernate时候,调用底层sql实现
2.实现过程
①建立对象
②调用对象的方法获得结果
注意:若是用SQLQuery对象直接调用list()方法,返回的集合中元素是以集合的形式出现的,因此要让其以实体类的对象形式出现须要调用addEntity(实体类.class)方法来实现
@org.junit.Test public void testSQLQuery() { Session session=null; Transaction transaction=null; try{ //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做业务 //1.建立一个SQLQuery对象 String sql="select * from user"; SQLQuery sQLQuery=session.createSQLQuery(sql); //------------------- /* //2.调用SQLQuery的list()方法返回值是一个List类型的,list集合里面的元素是以数组的形式存在的 List<Object[]> list=sQLQuery.list(); //循环输出值 for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); }*/ //-------------------- //让SQLQuery的list()方法返回值中的元素是以对象形式存在的解决办法 sQLQuery.addEntity(User.class); //调用sQLQuery里面的方法 List<User> list =sQLQuery.list(); for (User user : list) { System.out.println(user); } //提交事务 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事务回滚 transaction.rollback(); }finally{ //关闭方法 HibernateUtil.close(); } }