hibernate中的API使用(Query,Criteria和SQLQuery)
Query对象(查询所有)
1、使用Query对象,不需要再写SQL语句,但是写hql(hibernate query language)语句;
2、hql和sql很相似,区别在于sql操作对象是表和表中的字段,而hql操作实体类和属性(如“from 实体类”);
3、Query对象的使用
(1)使用session类的createQuery(参数)方法创建query对象,参数为hql语句如“from 实体类名”;
(2)调用该query对象的list方法得到List<实体类> list的集合;
(3)使用增强for循环遍历list输出。
Query query = session.createQuery("from User");
List<User> list = query.list();
for(User user:list) {
System.out.println(user);
}
Criteria对象(查询所有)
1、使用Criteria对象查询,使用时不需要写语句,直接调方法;
2、Criteria对象的使用
(1)使用session类的createCriteria(参数)方法创建Criteria对象,参数为:实体类名.class;
(2)使用该Criteria对象的list方法得到List<实体类> list集合;
(3)使用增强for循环遍历list输出。
Criteria criteria = session.createCriteria(User.class);
List<User> list = criteria.list();
for (User user:list) {
System.out.println(user);
}
SQLQuery对象(不常用)
1、使用hibernate的SQLQuery对象时,可以调用底层的sql语句;
2、SQLQuery对象的使用方法之一
(1)session的createSQLQuery(参数)创建SQLQuery对象,参数:“SQL语句”(“select * from table where *”);
(2)调用SQLQuery对象的list()方法,返回list<object[]>集合,默认每部分都是数组结构;
(3)使用增强for循环遍历输出(可以使用Arrays.toString(Object[])的方法帮助输出)。
SQLQuery sqlQuery = session.createSQLQuery("select * from t_User where uid>3");
List<Object[]> list = sqlQuery.list();
for (Object[] obj : list) {
System.out.println(Arrays.toString(obj));
}
3、SQLQuery对象的使用方法之二
(1)session的createSQLQuery(参数)创建SQLQuery对象,参数:“SQL语句”(“select * from table where *”);
(2)调用SQLQuery对象的addEntity(参数)方法(将list方法的返回值设置为新的对象类),参数:实体类名.class
(3)调用SQLQuery对象的list()方法,返回list<实体类名>集合;
(3)使用增强for循环遍历输出。
SQLQuery sqlQuery = session.createSQLQuery("select * from t_User where uid>3");
sqlQuery.addEntity(User.class);
List<User> list = sqlQuery.list();
for (User user : list) {
System.out.println(user);
}