Hibernate HQL,Criteria和SQL
Hibernate HQL和Criteria
HQL:HQL(Hibernate Query Language)是hibernate专门用于查询数据的语句,有别于SQL,HQL 更接近于面向对象的思维方式。
/** * ---------HQL查询根据name进行模糊查询-------- */ public class TestHibernate6 { public static void main(String[] args) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); //模糊查询 String name="iPhone"; //HQL查询SQL语句 Query query = session.createQuery("from Product p where p.name like ?"); query.setString(0,"%"+name+"%"); List<Product> productList = query.list(); for (Product product : productList) { System.out.println(product); } //提交时事务 session.getTransaction().commit(); //关闭 session.close(); sessionFactory.close(); } }
Criteria:与HQL和SQL的区别是Criteria 完全是 面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹
/** * ---------Criteria查询根据name进行模糊查询-------- * @author fereli */ public class TestHibernate7 { public static void main(String[] args) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); //模糊查询 String name="iPhone"; //Criteria的使用 Criteria criteria = session.createCriteria(Product.class); criteria.add(Restrictions.like("name","%"+name+"%")); List<Product> productList = criteria.list(); for (Product product : productList) { System.out.println(product); } //提交时事务 session.getTransaction().commit(); //关闭 session.close(); sessionFactory.close(); } }
两个结果一样:
SQL:因为标准SQL语句有可能返回各种各样的结果,比如多表查询,分组统计结果等等。 不能保证其查询结果能够装进一个Product对象中,所以返回的集合里的每一个元素是一个对象数组。 然后再通过下标把这个对象数组中的数据取出来。
/** * ---------标注sql查询根据name进行模糊查询-------- * @author fereli */ public class TestHibernate8 { public static void main(String[] args) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); //模糊查询 String name="iPhone"; //标准sql的使用 String sql="select * from product_ p where p.name like ‘%"+name+"%‘"; Query query= session.createSQLQuery(sql); List<Object[]> list = query.list(); for (Object[] objects : list) { for (Object object : objects) { System.out.print(object+"\t"); } System.out.println(); } //提交时事务 session.getTransaction().commit(); //关闭 session.close(); sessionFactory.close(); } }
结果:
相关推荐
LetonLIU 2020-03-28
surpassdream 2011-12-11
tugangkai 2020-07-04
taisenki 2020-06-02
zzjmay 2020-05-17
shuiluobu 2020-03-20
solarspot 2014-06-27
东方咖啡屋 2019-12-08
浮生 2011-12-12
keruis 2015-02-03
小黄鸡kimhuhg 2015-02-16
Lingforme 2015-07-23
bigcactus 2012-05-21
张浩BIT 2012-04-22
虽然我很菜 2016-01-08
WJI 2014-11-06
kobexing 2014-07-16
crazzylp 2014-01-08
netHibernate 2014-01-04