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;
}
}

TypeCaseHelper.java

package cn.edu.hbcf.common.utils;

import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale; /**
* 类型转换辅助工具类<br>
*
*/
public class TypeCaseHelper { /**
* 转换核心实现方法
*
* @param obj
* @param type
* @param format
* @return Object
* @throws TypeCastException
*/
public static Object convert(Object obj, String type, String format) throws TypeCastException {
Locale locale = new Locale("zh", "CN", "");
if (obj == null)
return null;
if (obj.getClass().getName().equals(type))
return obj;
if ("Object".equals(type) || "java.lang.Object".equals(type))
return obj;
String fromType = null;
if (obj instanceof String) {
fromType = "String";
String str = (String) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return obj;
if (str.length() == 0)
return null;
if ("Boolean".equals(type) || "java.lang.Boolean".equals(type)) {
Boolean value = null;
if (str.equalsIgnoreCase("TRUE"))
value = new Boolean(true);
else
value = new Boolean(false);
return value;
}
if ("Double".equals(type) || "java.lang.Double".equals(type))
try {
Number tempNum = getNf(locale).parse(str);
return new Double(tempNum.doubleValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
try {
BigDecimal retBig = new BigDecimal(str);
int iscale = str.indexOf(".");
int keylen = str.length();
if (iscale > -1) {
iscale = keylen - (iscale + 1);
return retBig.setScale(iscale, 5);
} else {
return retBig.setScale(0, 5);
}
} catch (Exception e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Float".equals(type) || "java.lang.Float".equals(type))
try {
Number tempNum = getNf(locale).parse(str);
return new Float(tempNum.floatValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Long".equals(type) || "java.lang.Long".equals(type))
try {
NumberFormat nf = getNf(locale);
nf.setMaximumFractionDigits(0);
Number tempNum = nf.parse(str);
return new Long(tempNum.longValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
try {
NumberFormat nf = getNf(locale);
nf.setMaximumFractionDigits(0);
Number tempNum = nf.parse(str);
return new Integer(tempNum.intValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Date".equals(type) || "java.sql.Date".equals(type)) {
if (format == null || format.length() == 0)
try {
return Date.valueOf(str);
} catch (Exception e) {
try {
DateFormat df = null;
if (locale != null)
df = DateFormat.getDateInstance(3, locale);
else
df = DateFormat.getDateInstance(3);
java.util.Date fieldDate = df.parse(str);
return new Date(fieldDate.getTime());
} catch (ParseException e1) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
java.util.Date fieldDate = sdf.parse(str);
return new Date(fieldDate.getTime());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
if ("Timestamp".equals(type) || "java.sql.Timestamp".equals(type)) {
if (str.length() == 10)
str = str + " 00:00:00";
if (format == null || format.length() == 0)
try {
return Timestamp.valueOf(str);
} catch (Exception e) {
try {
DateFormat df = null;
if (locale != null)
df = DateFormat.getDateTimeInstance(3, 3, locale);
else
df = DateFormat.getDateTimeInstance(3, 3);
java.util.Date fieldDate = df.parse(str);
return new Timestamp(fieldDate.getTime());
} catch (ParseException e1) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
java.util.Date fieldDate = sdf.parse(str);
return new Timestamp(fieldDate.getTime());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
} else {
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
}
if (obj instanceof BigDecimal) {
fromType = "BigDecimal";
BigDecimal bigD = (BigDecimal) obj;
if ("String".equals(type))
return getNf(locale).format(bigD.doubleValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return obj;
if ("Double".equals(type))
return new Double(bigD.doubleValue());
if ("Float".equals(type))
return new Float(bigD.floatValue());
if ("Long".equals(type))
return new Long(Math.round(bigD.doubleValue()));
if ("Integer".equals(type))
return new Integer((int) Math.round(bigD.doubleValue()));
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Double) {
fromType = "Double";
Double dbl = (Double) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return getNf(locale).format(dbl.doubleValue());
if ("Double".equals(type) || "java.lang.Double".equals(type))
return obj;
if ("Float".equals(type) || "java.lang.Float".equals(type))
return new Float(dbl.floatValue());
if ("Long".equals(type) || "java.lang.Long".equals(type))
return new Long(Math.round(dbl.doubleValue()));
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
return new Integer((int) Math.round(dbl.doubleValue()));
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return new BigDecimal(dbl.toString());
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Float) {
fromType = "Float";
Float flt = (Float) obj;
if ("String".equals(type))
return getNf(locale).format(flt.doubleValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return new BigDecimal(flt.doubleValue());
if ("Double".equals(type))
return new Double(flt.doubleValue());
if ("Float".equals(type))
return obj;
if ("Long".equals(type))
return new Long(Math.round(flt.doubleValue()));
if ("Integer".equals(type))
return new Integer((int) Math.round(flt.doubleValue()));
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Long) {
fromType = "Long";
Long lng = (Long) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return getNf(locale).format(lng.longValue());
if ("Double".equals(type) || "java.lang.Double".equals(type))
return new Double(lng.doubleValue());
if ("Float".equals(type) || "java.lang.Float".equals(type))
return new Float(lng.floatValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return new BigDecimal(lng.toString());
if ("Long".equals(type) || "java.lang.Long".equals(type))
return obj;
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
return new Integer(lng.intValue());
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Integer) {
fromType = "Integer";
Integer intgr = (Integer) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return getNf(locale).format(intgr.longValue());
if ("Double".equals(type) || "java.lang.Double".equals(type))
return new Double(intgr.doubleValue());
if ("Float".equals(type) || "java.lang.Float".equals(type))
return new Float(intgr.floatValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type)) {
String str = intgr.toString();
BigDecimal retBig = new BigDecimal(intgr.doubleValue());
int iscale = str.indexOf(".");
int keylen = str.length();
if (iscale > -1) {
iscale = keylen - (iscale + 1);
return retBig.setScale(iscale, 5);
} else {
return retBig.setScale(0, 5);
}
}
if ("Long".equals(type) || "java.lang.Long".equals(type))
return new Long(intgr.longValue());
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
return obj;
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Date) {
fromType = "Date";
Date dte = (Date) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
if (format == null || format.length() == 0) {
return dte.toString();
} else {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new java.util.Date(dte.getTime()));
}
if ("Date".equals(type) || "java.sql.Date".equals(type))
return obj;
if ("Time".equals(type) || "java.sql.Time".equals(type))
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
if ("Timestamp".equals(type) || "java.sql.Timestamp".equals(type))
return new Timestamp(dte.getTime());
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Timestamp) {
fromType = "Timestamp";
Timestamp tme = (Timestamp) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
if (format == null || format.length() == 0) {
return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(tme).toString();
} else {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new java.util.Date(tme.getTime()));
}
if ("Date".equals(type) || "java.sql.Date".equals(type))
return new Date(tme.getTime());
if ("Time".equals(type) || "java.sql.Time".equals(type))
return new Time(tme.getTime());
if ("Timestamp".equals(type) || "java.sql.Timestamp".equals(type))
return obj;
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Boolean) {
fromType = "Boolean";
Boolean bol = (Boolean) obj;
if ("Boolean".equals(type) || "java.lang.Boolean".equals(type))
return bol;
if ("String".equals(type) || "java.lang.String".equals(type))
return bol.toString();
if ("Integer".equals(type) || "java.lang.Integer".equals(type)) {
if (bol.booleanValue())
return new Integer(1);
else
return new Integer(0);
} else {
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
}
if ("String".equals(type) || "java.lang.String".equals(type))
return obj.toString();
else
throw new TypeCastException("Conversion from " + obj.getClass().getName() + " to " + type + " not currently supported");
} private static NumberFormat getNf(Locale locale) {
NumberFormat nf = null;
if (locale == null)
nf = NumberFormat.getNumberInstance();
else
nf = NumberFormat.getNumberInstance(locale);
nf.setGroupingUsed(false);
return nf;
} public static Boolean convert2SBoolean(Object obj) throws TypeCastException {
return (Boolean) convert(obj, "Boolean", null);
} public static Integer convert2Integer(Object obj) throws TypeCastException {
return (Integer) convert(obj, "Integer", null);
} public static String convert2String(Object obj) throws TypeCastException {
return (String) convert(obj, "String", null);
} public static String convert2String(Object obj, String defaultValue) throws TypeCastException {
Object s = convert(obj, "String", null);
if (s != null)
return (String) s;
else
return "";
} public static Long convert2Long(Object obj) throws TypeCastException {
return (Long) convert(obj, "Long", null);
} public static Double convert2Double(Object obj) throws TypeCastException {
return (Double) convert(obj, "Double", null);
} public static BigDecimal convert2BigDecimal(Object obj, int scale) throws TypeCastException {
return ((BigDecimal) convert(obj, "BigDecimal", null)).setScale(scale, 5);
} public static Date convert2SqlDate(Object obj, String format) throws TypeCastException {
return (Date) convert(obj, "Date", format);
} public static Timestamp convert2Timestamp(Object obj, String format) throws TypeCastException {
return (Timestamp) convert(obj, "Timestamp", format);
}
}

TypeCastException.java

package cn.edu.hbcf.common.utils;

import java.io.PrintStream;
import java.io.PrintWriter; /**
* 类型转换工具类<br>
*
* @author
* @since 2009-07-06
* @see java.lang.RuntimeException
*/
public class TypeCastException extends RuntimeException { private static final long serialVersionUID = 1L; Throwable nested; public TypeCastException() {
nested = null;
} public TypeCastException(String msg) {
super(msg);
nested = null;
} public TypeCastException(String msg, Throwable nested) {
super(msg);
this.nested = null;
this.nested = nested;
} public TypeCastException(Throwable nested) { this.nested = null;
this.nested = nested;
} public String getMessage() {
if (nested != null)
return super.getMessage() + " (" + nested.getMessage() + ")";
else
return super.getMessage();
} public String getNonNestedMessage() {
return super.getMessage();
} public Throwable getNested() {
if (nested == null)
return this;
else
return nested;
} public void printStackTrace() {
super.printStackTrace();
if (nested != null)
nested.printStackTrace();
} public void printStackTrace(PrintStream ps) {
super.printStackTrace(ps);
if (nested != null)
nested.printStackTrace(ps);
} public void printStackTrace(PrintWriter pw) {
super.printStackTrace(pw);
if (nested != null)
nested.printStackTrace(pw);
}
}

最新文章

  1. MacTalk阅读有感
  2. Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  3. 包介绍 - UriTemplates (用于处理格式化Uri模板)
  4. ios手势
  5. PHP中比较两个时间的大小与日期的差值
  6. 第十二篇:SOUI的utilities模块为什么要用DLL编译?
  7. 浅析MongoDB数据库的海量数据存储应用
  8. 微软职位内部推荐-SDE II-MODC-Beijing
  9. 计算机思维or人的思维
  10. 利用Highcharts制作web图表学习(二)
  11. powerdesigner设置mysql唯一键,非主键
  12. &lt;meta http-equiv=&quot;refresh&quot; content=&quot;0; url=&quot;&gt;
  13. 玩转webpack(二):webpack的核心对象
  14. Centos 7部署docker
  15. uva 10123 - No Tipping dp 记忆化搜索
  16. LintCode Majority Number II / III
  17. Newtonsoft.Json 概述
  18. WampServer配置
  19. js 中的原型链与继承
  20. 微信小程序开发 [07] 写在后面的话

热门文章

  1. iOS: 复选框使用---第三方框架SSCheckBoxView-master
  2. windows下 memcached 和 redis 服务器安装
  3. JS-产生随机数的几个用法!
  4. django中根据模型生成页面的脚手架app-groundwork
  5. 使用JRadioButton 示例
  6. 虚拟机VMware12.0安装centos 6.5+VMware中虚拟机网络模式区分
  7. 导出oracle 到 mysql的解决办法
  8. 调整 firefox 源代码查看器的字体
  9. JMX 学习
  10. Pygame制作答题类游戏的实现