hibernate基础:过滤器(filters)

过滤器(filters):一种创新的方式来处理具有“显性(visibility)”规则的数据。

Hibernate filter是全局有效的、具有名字、可以带参数的过滤器, 对于某个特定的Hibernate session您可以选择是否启用(或禁用)某个过滤器

1、配置hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.project.pojo">
    <!-- 定义过滤器 name是过滤器名称 全局唯一 -->
    <filter-def name="userFilter">
        <!-- 过滤器可以携带参数 需要指定参数的名称和类型 -->
        <filter-param name="age" type="int"/>
    </filter-def>
    
    <class name="User" table="t_user">
        <id name="id" column="id" type="int">
            <generator class="native"></generator>
        </id>
        <property name="name" column="name" type="java.lang.String"></property>
        <property name="age" column="age" type="int"></property>
        
        <!-- 引用过滤器时指定名或条件 第一个age是列名称-->
        <filter name="userFilter" condition="age>:age"></filter>
    </class>

    <sql-query name="findUser">
        select * from t_user;
    </sql-query>
</hibernate-mapping>

2、代码测试

@Test
    public void testFilter(){
        //设置filter
        session.enableFilter("userFilter").setParameter("age", 28);
        //查询
        List<User> list = session.createQuery("from User").list();
        for(User u : list){
            System.out.println(u.getName()+"\t"+u.getAge());
        }
    }

 

上一篇:【转载】Spring Cloud Gateway-全局过滤器(Global Filters)


下一篇:Java_Eclipse_Maven环境搭建