Bootstrap

hibernate基础之三个API的使用(Query,Criteria和SQLQuery)

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);
			}
	




;