1.根据ID查询某"一个"实体类

方法1:

 String hql = "From ClassEntity as c where c.id=?";
ClassEntity entity = (ClassEntity) getSession().createQuery(hql).setInteger(0, id).uniqueResult();

方法2:

ClassEntity entity=(ClassEntity) getSession().get(ClassEntity.class,id);

2.获取"多个"实体类集合

String hql = "From StudentEntity";
List<StudentEntity> entityList=getSession().createQuery(hql).list();

3.更新或者删除某个实体类

例子1:

String hql = "Delete StudentEntity as s where s.id=?";
getSession().createQuery(hql).setInteger(0, id).executeUpdate();

例子2:

String hql = "Update StudentEntity as s set s.stuClass=?,s.stuName=?,s.birth=? where s.id=?";
getSession().createQuery(hql).setEntity(0, studentEntity.getStuClass()).setString(1, studentEntity.getStuName()).
setDate(2, studentEntity.getBirth()).setInteger(3, studentEntity.getId()).executeUpdate();

关于例子2的说明:

setEntity():此方法可以直接赋值实体类。

4.获得一个聚合函数的值

 String hql = "SELECT COUNT(*) FROM  StudentEntity";
long count = (long) getSession().createQuery(hql).iterate().next();

 或者(推荐下面写法)

  String hql = "SELECT COUNT(*) FROM  StudentEntity";
long count = (long) session.createQuery(hql).uniqueResult();

5.新增一个数据

 getSession().saveOrUpdate(student);

6.模糊查询

String hql = "From StudentEntity as s where s.id= ? or s.stuName like ?";
List<StudentEntity> lists = getSession().createQuery(hql).setString(0, "%" + param + "%").setString(1, "%" + param + "%").list();

7.分页查询

String hql = "From StudentEntity as s order by s.id desc ";
List<StudentEntity> lists= getSession().createQuery(hql).setFirstResult((page - 1) * size).setMaxResults(size).list();

8.多表联合查询(普通SQL不同)

8.1 内连接

    String hql = "From StuInfo as stu Inner Join stu.stuClass as cla where cla.classId=?";
List<Object[]> stuInfos = session.createQuery(hql).setInteger(0, 1).list();
//通过debug可以看出,此时返回值为一个object数组
for (Object[] stuInfo : stuInfos) {
System.out.println("stu:"+stuInfo[0]+" stuClass:"+stuInfo[1]);
}

8.2 左外连接

    String hql = "From StuInfo as stu Left Join stu.stuClass as cla where cla.classId=?";
List<Object[]> stuInfos = session.createQuery(hql).setInteger(0, 1).list();
//通过debug可以看出,此时返回值为一个object数组
for (Object[] stuInfo : stuInfos) {
System.out.println("stu:"+stuInfo[0]+" stuClass:"+stuInfo[1]);
}

8.3 右外连接

    String hql = "From StuInfo as stu Right Join stu.stuClass as cla where cla.classId=?";
List<Object[]> stuInfos = session.createQuery(hql).setInteger(0, 1).list();
//通过debug可以看出,此时返回值为一个object数组
for (Object[] stuInfo : stuInfos) {
System.out.println("stu:"+stuInfo[0]+" stuClass:"+stuInfo[1]);
}

待明确:

1.如果是3张表怎么处理?

2.返回的对象debug截图。

9.OR查询

        Query q = session.createQuery("from Dept d where deptId=:myId or deptName=:name");
q.setParameter("myId", 12);
q.setParameter("name", "财务部");

10.范围查询

        Query q = session.createQuery("from Dept d where deptId between ? and ?");
q.setParameter(0, 1);
q.setParameter(1, 20);

说明:

1.利用between and 优于使用大于小于操作模式。

11.

总结:

.若返回的是一个list集合,那么使用list()。
.若返回的是一个集合,那么使用uniqueResult()。
.若只需要执行"改和删除",那么使用executeUpdate()。
.模糊查询需要在赋值的时候才加入%。
.分页查询需要使用setFirstResult()和setMaxResults()。

常用HQL集锦的更多相关文章

  1. mysql常用命令集锦

    一.DCL语句(数据控制语句) 1.授权远程访问,针对IP和用户.DB的 grant {privilege list} on {dbname}.* to '{user}'@'{ip}' identif ...

  2. jquery常用代码集锦

    1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({     ajaxSettings : {         contentT ...

  3. Sublime text2 常用插件集锦

    No.01 – EmmetEmmet 是一个前端开发的利器,其前身是Zen Coding.它让编写 HTML 代码变得简单.Emmet 的基本用法是:输入简写形式,然后按 Tab 键.关于 Emmet ...

  4. PHP中的常用正则表达式集锦

    PHP中的常用正则表达式集锦: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xf ...

  5. php常用知识集锦

    php常用知识集锦 很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程. 1.判断是否为空 empty($_POST["name"]) 2 ...

  6. win10纯净版安装及其常用软件集锦(2020新年湘岳阳万江波整理)

    win10纯净版安装及其常用软件集锦 1.安装win10纯净版:链接:https://pan.baidu.com/s/1L9yl-LNxxDQbEN_TGswzcA 提取码:u0pt 2.安装WPS2 ...

  7. linux 常用命令 集锦

    第一章  LINUX简介及安装    1一.LINUX介绍    1二.LINUX安装    2三.LINUX目录    2四.总结来说:    3第二章 常用命令及帐户管理    4一.linux命 ...

  8. 【linux】常用命令集锦&持续更新...

    滴:转载引用请注明哦[握爪]:https://www.cnblogs.com/zyrb/p/9709013.html  对深度学习训练及日常work中的常用linux命令进行整理. [一]screen ...

  9. Git常用命令集锦

    本篇Git命令博客主要是一些Git常用命令,适合于有一定Git或linux基础的小伙伴进行参考 1.新建文件夹 mkdir 文件夹名 2.查看目录机构: pwd 3.将文件添加至Git管理范围:git ...

随机推荐

  1. Linux系统的信号详解

    一.信号类型 1) SIGHUP       2) SIGINT       3) SIGQUIT     4) SIGILL        5) SIGTRAP 6) SIGABRT      7) ...

  2. web-service客户端与服务器端的连接

    1 首先讲解下xfire XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举.和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地 ...

  3. JS IIFE写法

    IIFE 博客分类: 前端开发   介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>) ...

  4. 拖动滚动条时某一处相对另一处固定不动(position:fixed)

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  5. C/C++ kubetu

    reference sign & use predefine in c, but const in c++

  6. display:block;inline;inline-block大总结

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  7. HDU 1232 畅通工程(最小生成树+并查集)

    畅通工程 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  8. HDU1518:Square(DFS)

    Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

  9. CentOS安装VirtualBox增强工具

    安装过程中出现错误: Bulding the VirtualBox Guest Additions Kernel modules failedYour system does not seem to  ...

  10. android:contentDescription的作用是什么

    在写Android的XML布局文件时,在ImageView或ImageButton中经常会碰到一个提示: Missing contentDescription attribute on image. ...