由于学校还要到大三才学习java,所以本人的java知识相当薄弱。
在学习hibernate hql语句的时候,比如下面的代码
@Test
public void HQL4() {
testsave1();
Session session = sf.openSession();
session.beginTransaction();
Query q = session.createQuery("from Category c order by c.name desc");
q.setMaxResults(4);//控制显示在页面上的数量
q.setFirstResult(2);//显示在页面上开始的第一个值
List<Category> categories = (List<Category>)q.list();
for(Category c : categories) {
System.out.println(c.getId() + "-" + c.getName());
}
session.getTransaction().commit();
session.close();
}
开始的时候一直不懂到底从类Category中拿出来的对象是以一个什么样的方式存到List中去的,后来才明白上面的hql语句是将Category这个类里面的所有的对象(记住一定是以对象的形式一个一个存进去的),
所以在
for(Category c : categories) {
System.out.println(c.getId() + "-" + c.getName());
}
//先get第一个对象的id和name 就是下面对应的 8-c7,所以这个循环就是
for(i=0;i<list.size;i++)
{ Category c=Category[i]; System.out.println(c.getId() + "-" + c.getName()); }
List只是一个类型,实际存放的是Category[0] ,Category[1]。。。 而上面那个循环式对Category进行循环。
打印的时候,会显示(前面是id,后面是name)
8-c7
7-c6
6-c5
5-c4