标签:
自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询。有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖于特定的数据库,不了解SQL 语句,恐怕对使用HQL带来困难。Hibernate提供的Criteria查询帮助我们解决了这种问题。
下面介绍一下Criteria查询。
SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(User.class);//创建Criteria对象
List result = criteria.list();使用Criteria 的list()方法获得数据,list()方法返回List 实例
Iterator it = result.iterator();
while (it.hasNext()) { User user = (User) it.next(); System.out.println("用户名:" + user.getName()); } session.close(); sessionFactory.close();
Criteria查询排序 :
SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(House.class);//创建Criteria对象 //加入Order 条件 criteria.addOrder(Order.desc("price"));//以价格降序的方式排列 List result = criteria.list(); Iterator it = result.iterator(); while (it.hasNext()) { House house = (House) it.next(); System.out.println("标题:" + house.getTitle() + " 价格" + house.getPrice()); } session.close(); sessionFactory.close();
Criteria查询实现分页 :
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(House.class);//创建Criteria对象 criteria.setFirstResult(3);//设定查询返回结果的第一行数据的位置 criteria.setMaxResults(2);//限定查询返回数据的行数 List results = criteria.list(); Iterator it = results.iterator(); while(it.hasNext()){ House h = (House)it.next(); System.out.println("标题:"+h.getTitle()+ " 价格:"+h.getPrice()); } session.close(); sessionFactory.close();
Restrictions常用限定查询方法:
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 2276292708@qq.com 如果需要转载,请注明出处,谢谢!!
标签:
原文地址:http://www.cnblogs.com/wlx520/p/4708624.html