此文章是基于  搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台

一. 类文件介绍  

  1. CriteriaBuilder.java,DetachedCriteria构建类

package com.ims.persistence.base;

import java.math.BigDecimal;
import java.sql.Types;
import java.util.Map; import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions; import com.ims.common.DateUtil; public class CriteriaBuilder {
private DetachedCriteria detachedCriteria;
private Map<String, ?> parmasMap; public CriteriaBuilder(DetachedCriteria detachedCriteria, Map<String, ?> parmasMap){
this.detachedCriteria = detachedCriteria;
this.parmasMap = parmasMap;
} public DetachedCriteria addCriterion(String propertyName,String paramName){
return addCriterion(propertyName,paramName,Expression.EQ);
} public DetachedCriteria addCriterion(String propertyName,String paramName,Expression expression){
return addCriterion(propertyName, paramName, Types.VARCHAR, expression);
} public DetachedCriteria addCriterion(String propertyName,String paramName, Integer propertyType){
return addCriterion(propertyName,paramName,propertyType,Expression.EQ);
} public DetachedCriteria addCriterion(String propertyName,String paramName, Integer propertyType, Expression expression){
if(parmasMap!=null){
Criterion criterion = buildCriterion(propertyName,paramName,propertyType,expression);
if(null!=criterion){
detachedCriteria.add(criterion);
}
}
return detachedCriteria;
} private Criterion buildCriterion(String propertyName,String paramName,Integer propertyType,Expression expression){
boolean propertyBlank = true;
Object paramValue = parmasMap.get(paramName);
if(paramValue!=null && StringUtils.isNotBlank(paramValue.toString())){
propertyBlank = false;
} Criterion criterion = null;
if(!propertyBlank){
switch(propertyType){
case Types.INTEGER:
paramValue = Integer.valueOf(paramValue.toString());
break;
case Types.VARCHAR:
paramValue = paramValue.toString();
break;
case Types.DATE:
paramValue = DateUtil.stringToDate(paramValue.toString());
break;
case Types.DECIMAL:
paramValue = new BigDecimal(paramValue.toString());
break;
}
switch(expression){
case EQ:
criterion = Restrictions.eq(propertyName, paramValue);
break;
case NE:
criterion = Restrictions.ne(propertyName, paramValue);
break;
case GT:
criterion = Restrictions.gt(propertyName, paramValue);
break;
case GE:
criterion = Restrictions.ge(propertyName, paramValue);
break;
case LT:
criterion = Restrictions.lt(propertyName, paramValue);
break;
case LE:
criterion = Restrictions.le(propertyName, paramValue);
break;
}
}
return criterion;
} public DetachedCriteria addLikeCriterion(String propertyName,String paramName){
return addLikeCriterion(propertyName,paramName,MatchMode.ANYWHERE);
} public DetachedCriteria addLikeCriterion(String propertyName,String paramName,MatchMode matchMode){
if(parmasMap!=null){
Criterion criterion = buildLikeCriterion(propertyName,paramName,matchMode);
if(null!=criterion){
detachedCriteria.add(criterion);
}
}
return detachedCriteria;
} public Criterion buildLikeCriterion(String propertyName,String paramName,MatchMode matchMode){
Criterion criterion = null;
Object paramValue = parmasMap.get(paramName);
if(paramValue!=null && StringUtils.isNotBlank(paramValue.toString())){
criterion = Restrictions.like(propertyName, paramValue.toString(), matchMode);
}
return criterion;
}
}

  2. Expression.java,比较运算符枚举类

package com.ims.persistence.base;

public enum Expression {
/** 等于 */
EQ,
/** 不等于 */
NE,
/** 大于 */
GT,
/** 大于等于 */
GE,
/** 小于 */
LT,
/** 小于等于 */
LE;
}

二. 使用方法介绍
  1. 使用如类:WarehouseBSImpl.java

public class WarehouseBSImpl implements WarehouseBS{
private DetachedCriteria buildCriteria(DetachedCriteria detachedCriteria, Map<String, Object> params){
CriteriaBuilder criteriaBuilder = new CriteriaBuilder(detachedCriteria, params);
criteriaBuilder.addCriterion("warehouse.projectCode", "projectCode");
return detachedCriteria;
} @Override
public List<Map<String, Object>> getWarehouses(String projectCode) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("projectCode", projectCode);
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Warehouse.class, "warehouse");
buildCriteria(detachedCriteria, params); ProjectionList pList = Projections.projectionList();
pList.add(Projections.property("warehouse.warehouseCode").as("value"));
pList.add(Projections.property("warehouse.warehouseName").as("text"));
detachedCriteria.setProjection(pList);
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); return warehouseDao.findByCriteria(detachedCriteria);
} }

最新文章

  1. 【逆向篇】分析一段简单的ShellCode——从TEB到函数地址获取
  2. Linux下配置一个VNC服务器
  3. Linux TC基于CBQ队列的流量管理范例
  4. WPF RichTextBox的使用总结
  5. 微信JS-SDK应用DEMO
  6. 小学生之Map集合框架的使用
  7. Pthon MySQLdb 的安装
  8. 【python标准库】内建函数
  9. CSS样式覆盖规则
  10. JSP/Servlet Web 学习笔记 DaySix —— EL表达式
  11. UML简要
  12. JSP获取input(含正则表达式)
  13. 【汇编语言】Win10 安装 DOXBox0.74
  14. spring框架加载完成后执行上下文刷新事件(ContextRefreshedEvent)
  15. 有钱人都用iphone?
  16. ESB(Enterprise Service Bus)企业服务总线介绍
  17. Python web 框架之 Django 基础搭建服务
  18. 【Python接口测试】简单系统登录接口测试实例
  19. 集成tomcat插件到eclipse
  20. SM2的非对称加解密java工具类

热门文章

  1. Android总结之Gzip/Zip压缩
  2. SQL Server-聚焦使用索引和查询执行计划(五)
  3. android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。
  4. Oracle使用SQL传输表空间
  5. Oracle 11g静默安装软件+手工创建数据库
  6. 使用TypeScript拓展你自己的VS Code!
  7. 用Github pages搭建自己制作的网页,方法最简单,适用于新手
  8. IE6+未知尺寸元素水平垂直居中
  9. [原创]django+ldap+memcache实现单点登录+统一认证
  10. 学习javascript数据结构(二)——链表