博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate之HQL添加过滤器查询的用法
阅读量:5820 次
发布时间:2019-06-18

本文共 1709 字,大约阅读时间需要 5 分钟。

  HQL查询过程中支持添加过滤器.使用步骤是这样的:

  首先在要查询的实体对象的映射中使用<filter-def>标签配置过滤器,并在相对应的<class>标签中添加对应的<filter>过滤器;然后在对应的程序文件中使用enableFilter()方法启动过滤器,为过滤器定义的参数赋值,在执行时就会自动自行对应的过滤器

以上一节的Book和Category表为例:

  1.定义过滤器,在Book.hbm.xml文件中添加:

 

2.使用过滤器,在Book.hbm.xml文件的class标签下添加:

在测试代码中启用过滤器:

@Test    public void testHql10() {        //过滤器的使用 为查询加上某些条件        /*         * 1.定义过滤器         * 2.为过滤器添加条件         * 3.引用 过滤器         */        // 创建Query对象         Session session = HibernateUtil.getSession();        //启用过滤器        //这样的话不管干什么,都会在hql语句后面加上 where id=3        session.enableFilter("bookFilter").setParameter("id", 3);        List
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]

 

  

转载地址:http://wszdx.baihongyu.com/

你可能感兴趣的文章
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>