//需要保证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. the pitfull way to create a uClinux image including gdb.

    After downloaded and installed the GCT's SDK and toolchain, we try to make an our own image which in ...

  2. ios证书生成

    iOS有两种证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试 发布(Distribution)证书和描述文件 用于提交Appstore 准备环境 必需要 ...

  3. python框架之Django(10)-Form组件

    介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...

  4. Cartographer源码阅读(5):PoseGraph位姿图

    PoseGraph位姿图 mapping2D::PoseGraph类的注释: // Implements the loop closure method called Sparse Pose Adju ...

  5. Python基础(九) type元类

    python元类:type()    元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...

  6. svn执行update操作后出现:Error : Previous operation has not finished; run 'cleanup' if it was interrupted.

    svn执行update操作后出现:      Error : Previous operation has not finished; run 'cleanup' if it was interrup ...

  7. 56.关于vue项目的seo问题

    不可否定的是,vue现在火.但是在实际项目中,特别是像一下交互网站,我们不可避免会考虑到的是seo问题,这直接关系到我们网站的排名,很多人说用vue搭建的网站不能做优化,那我们真的要放弃vue,放弃前 ...

  8. 026-微软Ajax异步组件

    ASP.Net中内置的简化AJAX开发的控件UpdatePanel放入ScriptManager,将要实现AJAX效果的控件放到UpdatePanel中即可.UpdatePanel原理探秘,用Http ...

  9. Python学习笔记(1)__name__变量

    这是我在网上找到的一篇文章的标题. 本着学会了才是自己的,所以标题不变,自己试着再写一遍. 问题:__name__是什么? 背景:在学习编程规范的时候,我被要求函数的调用只能在__main()函数中使 ...

  10. Java IO--NIO(二)

    在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 异步IO 异步 I/O 是一种没有阻塞地读写数据的方法.通常,在代码进 ...