HQL:  hibernate query language(hibernate特有的查询语言)

  hql是基于对象的查询语言,其语法与sql类似,但是他和sql的区别在于sql是面向表和字段的查询,而hql是面向对象和属性的查询。

需求1. 查询出所有的项目

 @Test
public void testFindAllPorject(){
//获取hibernate session
Session session = HibernateUtils.getSession();
//定义hql语句
String hql = "select project from com.deng.hibernate.bean.Project project"; // "select * from project";
//创建一个查询对象Query
Query query = session.createQuery(hql);
//调用query的相关方法来执行相关的动作
List<Project> list = query.list();
System.out.println(list);
session.close();
}

需求2. 根据给定项目的地址模糊查询,并按照创建时间倒叙排列(hql中带参数的查询)

 @Test
public void testFindPorjectByCondition(){
//获取hibernate session
Session session = HibernateUtils.getSession();
String addr = "龙";
//定义hql语句
String hql = "from com.deng.hibernate.bean.Project project " +
// " where project.address like ? " + 基于问号的参数
" where project.address like :myaddr " +//基于命名的参数,冒号是命名参数的语法开始
" order by project.createTime desc"; // "select * from project";
//创建一个查询对象Query
Query query = session.createQuery(hql);
//设置参数,需要注意,问号参数的位置从0开始
query.setString("myaddr","%"+addr+"%");
// query.setString(0,"%"+addr+"%");
//调用query的相关方法来执行相关的动作
List<Project> list = query.list();
System.out.println(list);
session.close();
}

需求3:查询出公司名包含【新希望】的公司下的所有的项目。

  项目和 公司的关系是多对一,在Project对象中有

  @Basic
@ManyToOne
@JoinColumn(name = "company_id")
public Company getCompany() {
return company;
}

此时的做法:

@Test
public void testFindProjectByCompanyName(){
Session session = HibernateUtils.getSession();
String hql = "from com.deng.hibernate.bean.Project p where " +
" p.company.companyName like :cname ";
Query query = session.createQuery(hql);
query.setString("cname","%新希望%");
List<Project> list = query.list();
System.out.println(list); session.close();
}

需求4. 查询出所有的项目,根据创建时间倒叙排列,要求是第三页的数据(每页3行)

@Test
public void testFindProjectByPage(){
Session session = HibernateUtils.getSession();
String hql = "from com.deng.hibernate.bean.Project p order by p.createTime desc";
Query query = session.createQuery(hql);
//设置结果集的起始索引,也就是从多少行开始取
query.setFirstResult(6);
//设置最多获取多少条数据
query.setMaxResults(3);
List<Project> list = query.list();
System.out.println(list); session.close();
}

需求5. 获取总共有多少个项目

@Test
public void testCountProject(){
Session session = HibernateUtils.getSession();
String hql = "select count(1) from com.deng.hibernate.bean.Project p ";
Query query = session.createQuery(hql);
//uniqueResult 返回唯一的结果
Long count = (Long)query.uniqueResult();
System.out.println("----------->"+count);
session.close();
}

需求6. 统计每个项目的可租面积和产权面积的综合

 //查询出所有资源的可租面积总和,产权面积总和
@Test
public void testSumResource(){
Session session = HibernateUtils.getSession(); String hql = "select res.project, sum(res.measureArea) as allArea,sum(res.canLeaseArea) as can from Resource res " +
" group by res.project";
Query query = session.createQuery(hql);
//有多行数据时
List<Object[]> list = query.list();
//只有一行数据
// Object[] obj = (Object[])query.uniqueResult();
// System.out.println(obj[0]);
// System.out.println(obj[1]); session.close();
}

最新文章

  1. ASP.Net的两种开发模式
  2. javascript中apply、call和bind的区别
  3. 用WPF实现查找结果高亮显示
  4. Linux的文件时间
  5. Qunie问题
  6. C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
  7. 转: svn合并分支到trunk
  8. css块级标签、行内标签、行内块级标签
  9. DataTimePicker
  10. Chipmunk僵尸物理对象的出现和解决(三)
  11. AI 玩法整理
  12. Python 协程检测Kubernetes服务端口
  13. 玩转TypeScript(2) --简单TypeScript类型
  14. CAM 查看里先选哪些层才能方便查看
  15. 进程表/文件表/inode/vnode
  16. UVA11987 Almost Union-Find [带权并查集]
  17. 解析theme()
  18. 记录--jquery 获取父级、子级、兄弟元素 + 实例
  19. no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
  20. linux shell内置判断

热门文章

  1. 值不能为空。参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explorer)
  2. sqli-labs(17)
  3. wannafly 挑战赛9 B 数一数(kmp)
  4. [CSP-S模拟测试]:Cicada与排序(概率DP)
  5. 20175221 《Java程序设计》第10周学习总结
  6. Linux 下ThinkPHP项目出现_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/0dfec61edd66f450033aa87c28a760f4.php
  7. pip安装报错:Fatal error in launcher: Unable to create process using &#39;&quot;&#39;
  8. windows程序调试
  9. Vue开发调试神器 vue-devtools
  10. 安装 Windows 系统在 NVMe 规范的 M.2 接口的固态硬盘(SSD)上