[Framework>>Hibernate>>Filter] Hibernate过滤器Filter

一、hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.zytrc.orm.model.SystemUser" table="system_user" catalog="zytrc_util">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="45" />
        </property>
        <property name="job" type="java.lang.String">
            <column name="job" length="45" />
        </property>
        <property name="unit" type="java.lang.String">
            <column name="unit" length="200" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="45" />
        </property>
        <property name="addr" type="java.lang.String">
            <column name="addr" length="200" />
        </property>
        <property name="relationship" type="java.lang.String">
            <column name="relationship" length="45" />
        </property>
        <property name="telephone" type="java.lang.String">
            <column name="telephone" length="45" />
        </property>
        <property name="isLogin" type="java.lang.String">
            <column name="isLogin" length="1" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="45" />
        </property>
        <property name="account" type="java.lang.String">
            <column name="account" length="45" />
        </property>
        <property name="roleId" type="java.lang.String">
            <column name="role_id" length="45" />
        </property>
        <property name="roleName" type="java.lang.String">
            <column name="role_name" length="45" />
        </property>
        <property name="encPwd" type="java.lang.String">
            <column name="enc_pwd" length="500"/>
        </property>
        
         <property name="enable" type="java.lang.String">
            <column name="enable" length="1" />
        </property>
        <property name="image" type="java.lang.String">
            <column name="image" length="500"/>
        </property>
        
        
       
        <filter name="loginFilter" condition="(account=:account or email=:account) and isLogin=1 and password=:password"></filter>
    </class>
     <filter-def name="loginFilter">
         <filter-param name="account"  type="string"/>
         <filter-param name="password" type="string"/>
     </filter-def>
</hibernate-mapping>

二、Java启用Filter

public List<?> executeFilterQuery(final String hql,
            final JazytricPagination pagination,
            final Map<String, Map<String, Object>> filters) {
        List<?> list = null;
        try {
            list = (List<?>) this.getHibernateTemplate().execute(
                    new HibernateCallback<Object>() {
                        public Object doInHibernate(Session session)
                                throws HibernateException, SQLException {
                            if (filters != null) {
                                for (String filterName : filters.keySet()) {
                                    Filter filter = session
                                            .enableFilter(filterName);
                                    Map<String, Object> params = filters
                                            .get(filterName);
                                    for (Map.Entry<String, Object> param : params
                                            .entrySet()) {
                                        filter.setParameter(param.getKey(),
                                                param.getValue());
                                    }

                                }
                            }
                            Query query = session.createQuery(hql);
                            setPageProperty(query, pagination);
                            List<?> list = query.list();
                            return list;
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list;
    }

 

 

 

Map<String,Object> map = ImmutableMap.of("account", (Object)account,"password", (Object)password);
Map<String,Map<String,Object>> filters = ImmutableMap.of("loginFilter", map)

 

posted @ 2016-11-21 18:08  珞珈搬砖工  阅读(129)  评论(0)    收藏  举报