公共查询类criteria

package cn.edu.hbcf.common.vo;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import cn.edu.hbcf.common.utils.TypeCaseHelper;

/**
 * 公用条件查询类 也可以用于MVC层之间的参数传递
 *
 * @author LiPenghui
 *
 */
public class Criteria {

    /**
     * 存放条件查询值
     */
    private Map<String, Object> condition;
    /**
     * 是否相异 为什么是protected类型?
     */
    private boolean distinct;
    /**
     * 排序字段
     */
    private String orderByClause;

    private int start;
    private int limit;

    private Integer oracleStart;
    private Integer oracleEnd;

    public Integer getOracleStart() {

        return oracleStart;
    }

    public void setOracleStart(Integer oracleStart) {
        this.oracleStart = oracleStart;
    }

    public Integer getOracleEnd() {
        return oracleEnd;
    }

    public void setOracleEnd(Integer oracleEnd) {
        this.oracleEnd = oracleEnd;
    }

    public Map<String, Object> getCondition() {
        return condition;
    }

    public void setCondition(Map<String, Object> condition) {
        this.condition = condition;
    }

    public Criteria() {
        condition = new HashMap<String, Object>();
    }

    public void clear() {
        this.condition.clear();
        this.orderByClause = null;
        this.distinct = false;
        this.start = 0;
        this.limit = 0;
    }

    /**
     * 添加查询条件
     *
     * @param conditionKey
     * 查询条件的名称
     * @param contidionValue
     * 查询条件的值
     * @return
     */
    public Criteria put(String key, Object value) {
        this.condition.put(key, value);
        return (Criteria) this;
    }

    /**
     * 得到键值,C层和S层的参数传递时取值所用 自行转换对象
     *
     * @param contionKey
     * 条件键值
     * @return 返回指定键所映射的值
     */
    public Object get(String contionKey) {
        return this.condition.get(contionKey);
    }

    public Map<String, Object> getConditionMap() {
        return condition;
    }

    public void setConditionMap(Map<String, Object> conditionMap) {
        this.condition = conditionMap;
    }

    /**
     * 是否相异
     *
     * @return
     */
    public boolean isDistinct() {
        return distinct;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    /**
     * 获取排序字段
     *
     * @return
     */
    public String getOrderByClause() {
        return orderByClause;
    }

    /**
     * 设置排序字段
     *
     * @param orderByClause
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    /**
     * 以BigDecimal返回键值
     *
     * @param key
     * 键名
     * @return Date 键值
     */
    public BigDecimal getAsBigDecimal(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "BigDecimal", null);
        if (obj != null) {
            return (BigDecimal) obj;
        } else {
            return null;
        }
    }

    /**
     * 以Date类型返回键值
     *
     * @param key
     * 键名
     * @return Date 键值
     */
    public Date getAsDate(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "Date", "yyyy-MM-dd");
        if (obj == null) {
            return (Date) obj;
        } else {
            return null;
        }
    }

    /**
     * 以Integer类型返回键值
     *
     * @param key
     * 键名
     * @return Integer 键值
     */
    public Integer getAsInteger(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "Integer", null);
        if (obj != null) {
            return (Integer) obj;
        } else {
            return null;
        }
    }

    /**
     * 以Long类型返回键值
     *
     * @param key
     * 键名
     * @return Long 键值
     */
    public Long getAsLong(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "Long", null);
        if (obj != null) {
            return (Long) obj;
        } else {
            return null;
        }
    }

    /**
     * 以字符串类型返回键值
     *
     * @param key
     * 键名
     * @return 键值
     */
    public String getAsString(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "String", null);
        if (obj != null) {
            return (String) obj;
        } else {
            return null;
        }
    }

    /**
     * 以Timestamp类型返回键值
     *
     * @param key
     * 键名
     * @return Timestamp键值
     */
    public Timestamp getAsTimestamp(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "Timestamp", null);
        if (obj != null) {
            return (Timestamp) obj;
        } else {
            return null;
        }
    }

    /**
     * 以Boolean类型返回键值
     *
     * @param key
     * 键名
     * @return Boolean 键值
     */
    public Boolean getAsBoolean(String key) {
        Object obj = TypeCaseHelper.convert(get(key), "Boolean", null);
        if (obj != null) {
            return (Boolean) obj;
        } else {
            return null;
        }
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }
}
时间: 2024-10-12 16:24:06

公共查询类criteria的相关文章

EF 公共查询类

因需求忒多,所以自己拼接了下备忘. /// <summary> /// 公共查询类 /// </summary> public static class PublicPredicateBuilder { /// <summary> /// 地区组合查询 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="db&qu

【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用

 四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换json包.json转换object动态类.DataReader转换为Json.DataSet转换为Json.DataTable转成Json.Datatable转换为Json .格式化字符型日期型布尔型.过滤特殊字符等 using System; using System.Collections.Ge

Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> /// 测试值为枚举 /// </summary> [TestMethod] public void TestGetValue_Enum() { var test1 = new Test1(); test1.NullableEnumValue = LogType.Error; //属性为枚举,值

Util应用程序框架公共操作类(六):验证扩展

前面介绍了仓储的基本操作,下面准备开始扩展查询,在扩展查询之前,首先要增加两个公共操作类,一个是经常要用到的验证方法,另一个是Lambda表达式的操作类. 很多时候,我们会判断一个对象是否为null,由于null是一个不能接受的值,它会导致“未将对象引用设置到对象的实例”的严重错误,所以当检测到null值时一般直接抛出ArgumentNullException异常. public void Test( string name ) { if( name == null ) throw new Ar

Hibernate框架之HQL查询与Criteria 查询的区别

Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: /* * 查询所有房屋 * * (non-Javadoc) * @see Dao.HouseDao#selecthouse() */ public List<House> selecthouse() { // TODO Auto-generated method stub //获取连接 Sess

hibernate框架学习笔记7:HQL查询、Criteria查询

HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; priv

JDBC公共操作类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final

【C#公共帮助类】分页逻辑处理类

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Common 7 { 8 /// <summary> 9 /// 分页逻辑处理类 10 /// </summary> 11 public class PageCollection 12 { 13 /// <summary> 14 /// 总页数 15 ///

Rest数据服务查询类-根据sql查询

Rest数据服务查询类 需要iserver data服务支持,但请求的时候,不依赖SuperMap js lib包. 构造函数:QueryById=function(p_params): p_params={}; 具体参数描述如下: p_params.url; // http://127.0.0.1:8090/iserver/services/data-China400/rest/data/featureResults.json p_params.dataSets; // world:capti