Hibernate查询方式
Hibernate查询方式
1 OID查询
(1)根据id查询某一条记录,返回对象
2 对象导航查询
(1)根据id查询某个公司,再查询这个公司里面所有的员工
Company c=session.get(Company.class, 1); Set<Worker> set= c.getWorkers(); for (Worker worker : set) { System.out.println(worker.getWname()+" "+worker.getWid()); }
3 HQL查询
(1)Query对象,写hql语句实现查询
1 hql:hibernate query language,hibernate提供一种查询语言,hql语言和普通sql很相似,区别:普通sql操作数据库表和字段,hql操作实体类和属性
(2) 常用的hql语句
a、查询所有: from 实体类名称
b、条件查询: from 实体类名称 where 属性名称=?
c、排序查询: from 实体类名称 order by 实体类属性名称 asc/desc(倒序排列)
(3)使用hql查询操作时候,使用Query对象
a、创建Query对象,写hql语句
b、调用query对象里面的方法得到结果
例:查询所有
1 查询所有客户记录
(1)创建Query对象,写hql语句
(2)调用query对象里面的list方法得到结果
Query query=session.createQuery("from Company");
List<Company> list=query.list();
条件查询
hql条件查询语句写法:
1 from 实体类名称 where 实体类属性名称=? and实体类属性名称=?
2 from 实体类名称 where 实体类属性名称 like ?
3 from 实体类名称 where 实体类属性名 like ‘%百’ 是单引号
1 明确条件查询
Query query= session.createQuery("from Company where cid=?and cname=?"); query.setParameter(0, 1); query.setParameter(1,"百度"); List<Company> list=query.list();
2 模糊条件查询
Query query= session.createQuery("from Company where cname like ?"); query.setParameter(0, "百%"); List<Company> list=query.list();
排序查询
1 hql排序语句写法
(1)from 实体类名称 order by 实体类属性名称 asc/desc(desc为倒叙)
Query query= session.createQuery("from Company order by cid desc"); List<Company> list=query.list();
投影查询
1 投影查询:查询表中部分字段的值
2 投影查询hql语句写法:
(1)select 实体类属性名称1, 实体类属性名称2 from 实体类名称
(2)注意: select 后面不能写 * ,不支持的
3 具体实现
Query query= session.createQuery("select cname from Company "); List<String> list=query.list();
2 查询所有: from 实体类名称
4 QBC查询
(1)Criteria对象
5 本地sql查询
(1)SQLQuery对象,使用普通sql实现查询