//需要保证Emp和EmpProperties中的setter和getter以及属性以及 参数占位符(:eName) 的一致
//动态查询
@Test
public void test4(){
EmpProperties ep=new EmpProperties();
//set query conditions
ep.seteName("%A%");
ep.setStartDate(new Date(383155200000L));
ep.setEndDate(new Date());
ep.setJob("CLERK"); //1.obtain org.hibernate.Session object.
Session ss=HibernateUtil.getSession(); //2.hql statement: s
StringBuffer hql=new StringBuffer("from Emp e where 1=1 ");
//3.判断EmpProperties总属性是否为null
if(ep.geteName()!=null){
hql.append(" and e.eName like :eName ");//e.eName和Emp中的属性保持一致|:eName和EmpProperties中的属性保持一致
}
if(ep.getStartDate()!=null){
hql.append(" and e.hireDate>=:startDate ");
}
if(ep.getEndDate()!=null){
hql.append(" and e.hireDate<=:endDate ");
}
if(ep.getJob()!=null){
hql.append(" and e.job=:job");
} //执行hql语句,hql转换为String(使用toString()方法)
Query qr=ss.createQuery(hql.toString());
//给hql语句中的参数赋值
qr.setProperties(ep); @SuppressWarnings("unchecked")
List<Emp> el= qr.list();
for (Emp emp : el) {
System.out.println(emp.geteName()+"\t"+ emp.getEmpNo());
}
System.out.println("查询记录数: "+el.size());
HibernateUtil.closeResource(ss);
}

[Hibernate] 通过 properties 类和 hql 语句进行动态查询的更多相关文章

  1. 【Hibernate 6】常用的hql语句以及N+1问题

    HQL:Hibernate Query Language,是Hibernate框架中的查询语言,十分接近于SQL语言!以下介绍一些常用的Hql语句: 一.测试类 Classes类: <span ...

  2. ibatis Dynamic总结(ibatis使用安全的拼接语句,动态查询)

    ibatis中使用安全的拼接语句,动态查询,ibatis比JDBC的优势之一,安全高效 说明文字在注释中 一.引入 一个小例子  <select id="selectAllProduc ...

  3. HQL语句:三表查询(一对多,一对多)

    实体类:CrmDepartment package com.learning.crm.department.domain; import java.util.HashSet; import java. ...

  4. adoquery查询语句sql动态查询删除方法

    百度文库链接地址:http://wenku.baidu.com/link?url=uVzbjjaHIziYuproREP_hO7MTLMf2g998QTKN4oLMeko5D7k0vSlTMFaby2 ...

  5. sql不用拼接语句实现动态查询条件

    DECLARE @oFrom INT SELECT * FROM baseinfo AND ( ( and Type = 'Breakfast') ) or的条件可自由添加,尤其适用互斥条件的查询.

  6. Hibernate写hql语句与不写hql语句的区别?

    写hql语句与不写hql语句的区别? 写hql语句:书写HQL语句,所有的查询与投影的设计均使用HQL语句完成. 不写hql语句:没有任何查询语句,所有的查询与投影的设计使用面向对象格式完成. 二者选 ...

  7. HQL语句简单介绍

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...

  8. spring data jpa 动态查询(工具类封装)

    利用JPA的Specification<T>接口和元模型就实现动态查询了.但是这样每一个需要动态查询的地方都需要写一个这样类似的findByConditions方法,小型项目还好,大型项目 ...

  9. hibernate -- HQL语句总结

    1. 查询整个映射对象所有字段 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 String hql = "from Users"; Query query ...

随机推荐

  1. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

  2. 解决秒杀活动高并发出现负库存(Redis)

    商城在秒杀活动开始时,同时有好多人来请求这个接口,即便做了判断库存逻辑,也难免防止库存出现超卖,造成损失 Django中的ORM本身就对数据库做了防范,但再过亿级访问也扛不住 下面利用Redis的过载 ...

  3. 20189203《Linux内核原理与分析》第一周作业

    实验一 Linux 系统简介 我在这一课中主要学习了Linux是什么,Linux的产生和发展历史,Linux发展中的重要人物以及Linux和Windows在是否收费.软件与支持.安全性等方面存在的一些 ...

  4. JAVA:IDEA使用Junit(3)

    1.配置 File ——> Project Structure ——> Libraries ——> + ——>搜索Junit类库 确认ok即可 2.编辑项目 选择创建 配置生成 ...

  5. Qt setMouseTracking(true) 无效

    网友1:并非只在QWidget中设置setMouseTracking(true)才好用,如若在QMainwindow中设置为true还是不能跟踪,解决办法为在ui中的属性栏主窗口的“mouseTrac ...

  6. qt 安装包生成2

    使用Qt Installer Framework制作安装包 2018年07月01日 03:45:37 大黄老鼠 阅读数:878 标签: qt更多 个人分类: Qt   版权声明:本文为博主原创文章,未 ...

  7. 生成并下载txt类型的文件

    public ActionResult Index() { return View(); } /// <summary> /// 获取网页源码,并将其写入txt文件中,下载到本地 /// ...

  8. CentOS 7 系统优化

    系统调优4大子系统 1:找出系统中使用CPU最多的进程 2:找出系统中使用内存最多的进程 3:找出系统中对磁盘读写最多的进程 4:找出系统中使用网络最多的进程 系统调优概述 系统的运行状况:  CPU ...

  9. [openjudge-搜索]湖的深度

    题目描述 描述 一个湖用 R x C (1 ≤ R ≤ 50; 1 ≤ C ≤ 50) 的网格表示.格点上的非负整数 D_rc (0 ≤ D_rc ≤ 1,000,000)表示该位置的深度.整数0表示 ...

  10. 使用java进行 AES 加密 解密?

    百度百科是这样定义的: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标 ...