Hibernate的查询除了默认的使用session进行查询,还额外的提供了三种对象的查询
1.Query对象
2.Criteria对象
3.SQLQuery对象
一:Query对象进行查询
使用Query对象进行查询的时候,不需要写标准的 sql 语句,写的是 hql(hibernate query language)语句,sql 语句和 hql 语句的区别是:sql 语句是对数据库中的表和字段进行操作,而 hql 语句是对表对应的实体类以及实体类中的属性进行操作,select * from 表名 变为 from 实体类
操作:
创建 Query 对象,调用 Query 对象的方法
先获取到session,通过 session 对象获取到 Query 对象
Query query = session.createQuery( hql 语句)
再执行 Query 对象中的 list 方法,获取所有的记录
List<T> list = query.list
例:
Query query = session.createQuery("from User")
List<User> list = query.list
二:Criteria对象进行查询
使用 Criteria 对象进行查询的时候,不需要写语句,直接调用 Criteria 对象的方法实现。在创建 Criteria 对象的时候,需要传入实体类,对那个表进行操作,就传入哪个表对应的实体类。
操作:
创建 Criteria 对象,调用 Criteria 对象的方法
通过 session 获取到 Criteria 对象
Criteria criteria = session.createCriteria(实体类.class)
执行 Criteria 对象的 list 方法
List<T> list = criteria.list()
例:
Criteria criteria = session.createCriteria(User.class)
List<User> list = criteria.list()
三:SQLQuery对象进行查询
当使用 SQLQuery 对象进行查询的时候,写的就是普通的 sql 语句,但是当使用 SQLQuery 对象执行查询的时候,返回的 list 集合中是一个个的数组,而不是实体类的对象,需要我们进行其他操作,将数组转换成对象
操作:
SQLQuery sqlQuery = session.createSQLQuery("select * from t_user")
sqlQuery.addEntity(User.class)
List<User> list = sqlQuery.list()