Hibernate之HQL添加过滤器查询的用法
HQL查询过程中支持添加过滤器.使用步骤是这样的:
首先在要查询的实体对象的映射中使用<filter-def>标签配置过滤器,并在相对应的<class>标签中添加对应的<filter>过滤器;然后在对应的程序文件中使用enableFilter()方法启动过滤器,为过滤器定义的参数赋值,在执行时就会自动自行对应的过滤器
以上一节的Book和Category表为例:
1.定义过滤器,在Book.hbm.xml文件中添加:
<!-- 定义过滤器 -->
<filter-def name="bookFilter">
<filter-param name="id" type="integer"/>
</filter-def>
2.使用过滤器,在Book.hbm.xml文件的class标签下添加:
<!--如果希望id大于或小于某个值 condition标签中应当写"id < :id"(id小于某个值)或"id > :id"(id大于某个值)-->
<filter name="bookFilter" condition="id=:id"></filter>
在测试代码中启用过滤器:
@Test
public void testHql10() {
//过滤器的使用 为查询加上某些条件
/*
* 1.定义过滤器
* 2.为过滤器添加条件
* 3.引用 过滤器
*/
// 创建Query对象
Session session = HibernateUtil.getSession();
//启用过滤器
//这样的话不管干什么,都会在hql语句后面加上 where id=3
session.enableFilter("bookFilter").setParameter("id", 3);
List<Book> list= (List)session.createQuery("from Book")
.list();
for(Book b:list){
System.out.println(b);
}
session.close(); }
这里会查询id=3的那本书,并且打印出来.
这是一个Hql中使用过滤器查询的一个简单例子.这是使用xml文件配置的方法,这里介绍一下使用注解(Annotation)过滤查询的实现方法:
1.实体类Book:
//entity表示需要持久化的实体类
@Entity
//实体类多对应的表
@Table(name="t_book")
//定义过滤器
@FilterDef(name="bookFilter",parameters={@ParamDef(name="id",type="integer")})
@Filter(name="bookFilter",condition="id < :id")//在注解中,">","<"不需要转义
public class Book {
//id主键
@Id
//设置主键生成策略,这里的auto表示自增长 与native对应
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
private double price;
private String author;
private Date pubDate;
//get/set方法省略
}
测试代码不需要改变,如果使用之上的测试代码将会打印:
Book [id=1, name=鹿鼎记, price=12.35, author=金庸, pubDate=2016-03-06 09:25:41.0, category=com.wang.pojo.Category@7347bcf4]
Book [id=2, name=斗破苍穹, price=22.35, author=土豆, pubDate=2016-03-06 09:25:41.0, category=com.wang.pojo.Category@1f10d4bf]
Hibernate之HQL添加过滤器查询的用法的更多相关文章
- Hibernate的HQL多表查询
HQL的内连接查询 对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回 代码片段: @Test // 内连接 public ...
- Hibernate:基于HQL实现数据查询
HQL: hibernate query language(hibernate特有的查询语言) hql是基于对象的查询语言,其语法与sql类似,但是他和sql的区别在于sql是面向表和字段的查询,而 ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- Hibernate 中Hql 查询中间表的用法
案例简述: 项目中存在User 用户表 和 Role 角色表 它们之间是多对多的关系 在User类定义中 使用hibernate注解 //角色列表 @ManyToMany(targetEntity = ...
- Hibernate之HQL基本用法
关于HQL HQL与SQL非常类似,只不过SQL的操作对象是数据表,列等对象,而HQL操作的是持久化类,实例,属性等. HQL是完全面向对象的查询语言,因此也具有面向对象的继承,多态等特性. 使用HQ ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
- Hibernate五 HQL查询
HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条 ...
- hibernate HQL添加语句
1.Hibernate HQL添加语句 save();方法使用HQL语句来完成插入操作是不能实现的,不管你使用insert into....values...还是insert into.....sel ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
随机推荐
- 1001. A+B Format (20)
原题连接:https://www.patest.cn/contests/pat-a-practise/1001 题目如下: Calculate a + b and output the sum in ...
- 网站中使用中文个性字库字体--@font-face解决方案探索 l(转)
最近的项目有用到特别中文字体,最终效果如下图: 红线标记处均为字体,可选中,交互起来,比图片方便太多了. 解决思路就是将体积巨大的中文字库,取子集,只包涵要使用的那部分文字,因此体积就很小了(包含10 ...
- ntko office在线编辑控件问题记录
ntko office在线预览插件 http://www.ntko.com/ 问题:火狐或谷歌下保存报[没有打开的文档]错误,ie正常 原因:火狐.谷歌.ie的各方法执行文字不同,ie嵌在页面,而火狐 ...
- VB.net 2010下关联与程序图标设置
'*************************************************************************'**模 块 名:VB.net 2010下关联与程序 ...
- CSS基础篇之选择符
关系选择符 E F 包含选择符(Descendant combinator) CSS1 选择所有被E元素包含的F元素. <html> <head> <meta chars ...
- XMPP iOS客户端实现一:服务器
1.下载ejabberd,下载链接http://www.process-one.net/en/ejabberd/downloads/ 2.安装,使用默认配置即可,next.. 3.启动ejabberd ...
- 给Macbook Pro更换固态硬盘并转移系统的最简单办法
没有固态硬盘,再快的CPU,再强悍的显卡,都是白搭,由于“木桶原理”,瓶颈就在这里啊.如今的固态硬盘价格跌了很多,我记得去年我买的120G的固态硬盘还要将近600元,而现在只需要不到400了. 我 ...
- ASP.NET MVC 过滤器(四)
ASP.NET MVC 过滤器(四) 前言 前一篇对IActionFilter方法执行过滤器在框架中的执行过程做了大概的描述,本篇将会对IActionFilter类型的过滤器使用来做一些介绍. ASP ...
- 更新Literacy
之前都没有做单元测试的啊 昨天离职了,闲着没事做了个单元测试,结果发现一堆问题....大部分都是关于值类型在IL中的操作问题... 这件事让我感觉蛋蛋隐隐发疼....以后一定要做单元测试啊.... 具 ...
- Leetcode 刷题计划
Two Sum 21.4% Medium Given an array of integers, return indices of the two numbers such that t ...