[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)
浙公网安备 33010602011771号