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. LNMP环境的安装配置

    0.安装必要的依赖软件 如果已经安装了可能会进行升级,版本完全一致则不会进行任何操作. yum -y install bzip2-devel curl-devel freetype-devel gcc ...

  2. libc.so.6重做链接,删除导致的缺失问题(后期需要深入研究),未能成功升级

    中间件启动,提示/lib64/libc.so.6版本过低,升级glibc后,修改临时环境变量,结果导致sgment fault错误,根据报错 ll /lib64/ |grep libc -rwxr-x ...

  3. TextureView+SurfaceTexture+OpenGL ES来播放视频(二)

    引自:http://www.jianshu.com/p/b2d949ab1a1a 在使用OpenGL ES 绘制前,我先概括下接下来要做的工作:我先借用一个博主kiffa举的的一个栗子,我觉得说的恰到 ...

  4. MVVM 入门介绍

    转载自:http://www.objccn.io/issue-13-1/ 我于 2011 年在 500px 找到自己的第一份 iOS 开发工作.虽然我已经在大学里做了好几年 iOS 外包开发,但这才是 ...

  5. java断点

    第一步: 用firefox运行程序,当点击保存,提示保存失败后,启动firebug 通过请求找到addNew.ezt出现错误,在eztnews.xml里通过ctrl+F查找找到请求执行的类和方法 找到 ...

  6. java 数据结构 图

    以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客,主要是在自己理解的基础上进行记录. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示 ...

  7. shell写多行到文件中

    用cat或者echo命令输入多行数据到指定文本 #!/bin/sh ( cat <<EOF start() { echo "start" } EOF ) > Ma ...

  8. Box2d b2World的RayCast方法

    RayCast方法: world.RayCast(callback:Function,point1:b2Vec2,point2:b2Vec2); * callback 回调函数 * point1 射线 ...

  9. js基础之数据类型

    一:JavaScript 数据类型:字符串.数字.布尔.数组.对象.Null.Undefined JavaScript 字符串;        var carname="Bill Gates ...

  10. 转:Linux基本命令大全

    Linux基本命令大全   新手刚刚接触Linux的时候可能处处感到不便,不过没有关系,接触新的事物都有这样的一个过程,在你用过Linux一段时间后,你就会逐渐了解Linux其实和Windows一样容 ...