Hibernate Hql语句查询类部分属性避坑之路
1.Hibernate 是什么?
百度所得:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
自身体会:全自动ORM框架,直接操作映射类对象来生成SQL语句查询,开发者可选是否手写SQL,比Mybatis中操作SQL比起来易用,而且Hibernate也支持手动编写Sql,可选性多。
Hibernate执行过程:
2.HQL 是什么?
百度所得:HQL是Hibernate Query Language(Hibernate 查询语言)的缩写,提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。
3.公司技术中使用Hibernate,本人对Hibernate一知半解,搜刮网上资料后对HQL语句的理解。
3.1 Hql 查整个对象
table t_student
columns id , name , age , gender ,phone.
class Student
private field id , name , age , gender ,phone. // 属性类型推荐,基础类型使用封装类,引用你随意。
method get,set
constructor 默认
无条件查询
最简版 " from Student ", 返回是List<Student >
" select s from Student s " 使用别名查询等价于" from Student " , 返回是List<Student >
有条件查询,怎么写呢?
" from Student s where s. id = value " , 语法:where 中 别名.属性名 = 值 ,返回是List<Student >
3.2 Hql 查询类部分属性 无条件查询,怎么写? *** 部分属性查询避坑 " Select s.id,s.name from Student s ", 返回是List<Object[]>,这不我想要的结果。 Hibernate号称全自动ORM实现,所以要使用类构造器来构建对象 class Student insert constructor(id,name) 来满足下面查询 " Select new Student(id,name) from Student ",返回是List<Student>,不过实例中只有 id,name 有实际值,其他属性都是默认值。
" Select new Student(id, name, age , gender ,phone) from Student " 等价于 " from Student " ,
推荐使用 " from Student ",理由很简单没必要给自己下绊子。
有条件查询
" Select new Student(id, name, age , gender ,phone) from Student s where s.id = value "
语法:where 中 别名.属性名 = 值 ,返回是List<Student >
今天到这了,口干了喝水去了,下次见面说下Hql连表查询
参考网址:
https://www.cnblogs.com/beautifulFuture/p/9565873.html