首页
统计
4K壁纸
留言
Search
1
自动采集头像+壁纸+流量主小程序
851 阅读
2
【腾讯云】低价服务器活动和新用户活动
494 阅读
3
Spring Di依赖注入环境
377 阅读
4
springboot
323 阅读
5
Spring MVC 结构体系
299 阅读
技术分享
学习笔记
jsp
Maven
Mybatis
Spring
Hibernate
系统源码
网站源码
APP源码
微信程序
小程序
登录
/
注册
Search
标签搜索
学习笔记
Hibernate
小程序
Mybatis
源码
教程
笔记
Ajax
微信
活动
福利
MyEclipse 10
笔记fen'x
壁纸小程序
微信程序
HQL
笔记分享
Mybatis-Plus
小新
累计撰写
44
篇文章
累计收到
42
条评论
首页
栏目
技术分享
学习笔记
jsp
Maven
Mybatis
Spring
Hibernate
系统源码
网站源码
APP源码
微信程序
小程序
页面
统计
4K壁纸
留言
搜索到
1
篇与
HQL
的结果
2022-04-09
HQL实用技术
HQL查询语言是一种面向对象的查询语言,没有表和字段的概念,只要类和对象的概念。我们查询的时候 是查询 实体类HQL语句HibernateUtil.currentSession().beginTransaction(); Session session = HibernateUtil.currentSession(); String hql = "from Emp"; Query query = session.createQuery(hql); // 适用createQuery()方法执行Query对象构建好后,有两种方式执行查询语句并获取查询结果,list() , iterate()两个方法参数绑定第一种显示参数方式HibernateUtil.currentSession().beginTransaction(); Session session = HibernateUtil.currentSession(); String hql = "from Emp where ENAME like concat('%',?,'%')"; Query query = session.createQuery(hql); //setParameter是任意类型参数 , 占位符下标从0开始 query.setParameter(0, "王"); List<Emp> list = query.list();如果参数为字符串类型,可调用setString()方法,整数类型调用setInteger() 依次类推setParameter是任意类型参数,还可以传递数组作为参数 ,对象第二种显示参数方式String hql = "from Emp where ENAME like concat('%',:ename,'%')";动态查询把对象作为参数 有参数作为判断条件,这里我是使用的字符串代替Map<String, Object> map = new HashMap<String, Object>(); String job = "CLERK"; Double sal = 1000.0; String startDt ="1981-4-1"; String endDt = "1985-9-9"; str.append("from Emp where 1 = 1 "); if(job !=null ){ str.append("and job = :job "); map.put("job", job); } if(sal !=null){ str.append("and sal > :sal "); map.put("sal", sal); } if(startDt !=null){ str.append("and HIREDATE >=to_date(:startDt,'yyyy-MM-dd') "); map.put("startDt", startDt); } if(endDt !=null){ str.append("and HIREDATE < to_date(:endDt,'yyyy-MM-dd') "); map.put("endDt", endDt); } Query query = session.createQuery(str.toString()); query.setProperties(map); List<Emp> list = query.list(); System.out.println(list);uniqueResult()方法Query接口提供的list(),iterate()方法获取查询结果集合,使用uniquerResult()方法是或缺唯一的 ,返回一条数据Query query = session.createQuery("select ename from Emp where empno=1944"); Object obs = query.uniqueResult();需要注意的是:当查询结果不是唯一的时候 , 不能使用 nuiqueResult()方法,否则会报错误!分页查询分页查询非常简单,只需要设置两个方法String hql = "from Emp"; Query query = session.createQuery(hql); //表示当前页数 query.setFirstResult(0); //每页显示的数据 query.setMaxResults(2); 投影查询有时候我们只需要展示数据,不需要获取对象的全部属性,比如结果聚合函数等方式得到某个结果,此时可以使用投影查询,下面是投影查询获取的几种方式//1. 单个投影值 Query query = session.createQuery("select ename from Emp where empno=1944"); Object obs = query.uniqueResult(); System.out.println(obs); //2. 单行投影值 Query query = session.createQuery("select empno ,ename, sal from Emp where empno=1944"); Object[] objs = (Object[])query.uniqueResult(); System.out.println(objs[0]); System.out.println(objs[1]); System.out.println(objs[2]); //3.多行投影值 Query query = session.createQuery("select empno ,ename, sal from Emp"); List<Object[]> list = query.list(); for (Object[] objects : list) { System.out.println(objects[0]); System.out.println(objects[1]); System.out.println(objects[2]); } //4. 构造方法投影 Query query = session.createQuery("select new Emp(empno ,ename, sal) from Emp"); List<Emp> list = query.list(); System.out.println(list);总结HQL是面向对象的查询语言,在Hibernate提供的各种查询方式中,HQL是使用最广的一种查询方式执行HQL语句需要Query接口,Query也是Hibernate的核心接口之一,执行HQL的两种常用的方法是list()方法 和 iterate()方法HQL语句中绑定的参数的形式有两种,按参数位置绑定,按参数名称绑定。HQL支持投影查询,灵活的参数查询,分页查询等功能.可以使用反向工具生成持久化类和映射文件
2022年04月09日
76 阅读
0 评论
0 点赞