最早接触Hibernate是在2004年,当时怀着忐忑和不安的心情来学习这门技术。经过这几年的使用和研 究,也积累了一定的经验,下面就HQL和QBC查询来谈一下我从工作中得到的一些总结。
本文不会讲什么是Hibernate、什么是ORM、更不会谈怎样使用HQL与QBC。本文的目的是让大家对平常 使用最多,也是最广泛的与数据库打交道的两种方式,有一个新的认识。
恩,如果你还不知道Hibernate,大象建议你先去学一下再来看本文,如果你已经是这方面的高手,大 可以关掉浏览器,千万不要因为本人的愚见,让你对大象口诛笔伐,进行人身攻击。
HQL和QBC都是查询检索的方式,最开始,我一直使用的都是HQL,因为以前一直用的都是SQL,觉得这 东西和SQL差不多,上手很快。后来又用QBC,因为QBC是基于接口和类的对象化查询,使代码变得很清晰 ,很整洁。
下面是查询用户表中,id为2,年龄等于21,并且名字以J开头的两种查询语句,它们的结果都是一样 ,只是不同的表现方式。
HQL:
Query query = session .createQuery("from User u where u.id = 2 and u.age = 21 and u.name like 'J%'"); List list = query.list(); QBC: Criteria criteria = session.createCriteria(User.class); List list = criteria.add (Expression.eq("id", 2)).add( Expression.eq("age", 21)).add(Expression.like ("name", "J%")) .list();
如果查询再复杂一点,需要关联多张表,那上面这个HQL语句就会显得很复杂,比较难以阅读。对于 QBC来说,需要再加一个createCriteria(),返回一个criteria新实例,比如说,用户表与帐号表关联, 需要根据帐号表中的帐号,开户时间,金额等信息进行查询,可以写成下面的形式:
List list = criteria.add(Expression.eq("id", 2)).add( Expression.eq ("age", 21)).add(Expression.like("name", "J%")) .createCriteria ("account", "a").add( Expression.eq("a.account_id", 112546)).add ( Expression.eq("a.start_date", "2008-8-30")).add( Expression.eq("a.money_sum", 1000)).list();
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hibernate
, 查询
, hql
, hibernate 分页 sum
, add
, hql查询
, 帐号
, hql 查询
, hibernate hql
, hibernate criteria
, expression
, 查询 关键词hql
, .createCriteria
用户表
hibernate qbc查询、hibernate hql 查询、hibernate多表查询hql、hibernate关联查询hql、hibernate分页查询hql,以便于您获取更多的相关知识。