java 操作属性_java对象属性操作

这是一个Java工具类,主要用于Java Bean与Map之间的属性转换。它包含将Map转换为Pojo对象以及将Pojo对象转换回Map的方法。此外,还提供了一个方法用于将字符串转换为特定类型的对象,例如日期和数值类型。同时,有一个方法将字段名转换为数据库列名的格式。
摘要由CSDN通过智能技术生成

package utils;

import java.beans.BeanInfo;

import java.beans.IntrospectionException;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Constructor;

import java.sql.Timestamp;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

import pojo.Point;

public class PropertiesUtil {

private static PropertyDescriptor[] getPropertyDescriptors(Object obj) {

BeanInfo ObjInfo;

try {

ObjInfo = Introspector.getBeanInfo(obj.getClass());

} catch (IntrospectionException e) {

return new PropertyDescriptor[0];

}

PropertyDescriptor[] propertyDesc = ObjInfo.getPropertyDescriptors();

return propertyDesc;

}

public static void mapToPojo(Map map, Object obj) {

PropertyDescriptor[] propertyDesc = getPropertyDescriptors(obj);

for (int i = 0; i < propertyDesc.length; i++) {

if (propertyDesc[i].getName().compareToIgnoreCase("class") == 0)

continue;

String strValue = (String) map.get(propertyDesc[i].getName());

Object value = parseObject(strValue, propertyDesc[i]

.getPropertyType());

try {

propertyDesc[i].getWriteMethod().invoke(obj, value);

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static void pojoToMap(Object obj, Map map) {

PropertyDescriptor[] propertyDesc = getPropertyDescriptors(obj);

for (int i = 0; i < propertyDesc.length; i++) {

if (propertyDesc[i].getName().compareToIgnoreCase("class") == 0)

continue;

String key = propertyDesc[i].getName();

try {

map.put(propertyDesc[i].getName(), propertyDesc[i]

.getReadMethod().invoke(obj));

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static Object parseObject(String fromObj, Class toClass) {

Object objReturn = null;

if (fromObj.equals("")) {

return objReturn;

}

String toClassName = toClass.getName();

if (fromObj.getClass().getName().equals(toClassName)) {

objReturn = fromObj;

} else if ("java.util.Date".equals(toClassName)) {

objReturn = JavaBeanDateUtil.toDate(fromObj);

} else if ("java.util.Calendar".equals(toClassName)) {

objReturn = JavaBeanDateUtil.toCalendar(fromObj);

} else if ("java.sql.Date".equals(toClassName)) {

objReturn = new Date(JavaBeanDateUtil.toDate(fromObj).getTime());

} else if ("java.sql.Time".equals(toClassName)) {

objReturn = new Timestamp(JavaBeanDateUtil.toDate(fromObj)

.getTime());

} else if ("java.sql.Timestamp".equals(toClassName)) {

objReturn = new Timestamp(JavaBeanDateUtil.toDate(fromObj,

"yyyy-MM-dd HH:mm:ss.SSS").getTime());

} else if ("java.lang.Integer".equals(toClassName)

|| "java.lang.Long".equals(toClassName)

|| "java.lang.Double".equals(toClassName)

|| "java.lang.Float".equals(toClassName)

|| "java.math.BigDecimal".equals(toClassName)

|| "java.lang.Short".equals(toClassName)) {

try {

Constructor constructor = toClass

.getConstructor(new Class[] { java.lang.String.class });

objReturn = constructor.newInstance(new Object[] { fromObj });

} catch (Exception e) {

e.printStackTrace();

}

} else {

throw new IllegalArgumentException("toClassName= " + toClassName

+ ", unsupported");

}

return objReturn;

}

public static String fieldToDbColum(String field) {

StringBuilder toField = new StringBuilder("");

for (int i = 0; i < field.length(); i++) {

char c = field.charAt(i);

if ('A' <= c && c <= 'Z') {

toField.append("_").append(String.valueOf(c).toLowerCase());

} else

toField.append(c);

}

return toField.toString();

/*

StringBuilder toField = new StringBuilder(field);

int j = 0;

for (int i = 0; i < field.length(); i++) {

char c = field.charAt(i);

if ('A' <= c && c <= 'Z') {

toField.insert(i + j, "_");

j++;

}

}

return toField.toString().toLowerCase();

*/

}

public static void main(String[] args) throws Exception {

Map map = new HashMap();

map.put("x", "100");

map.put("y", "100");

Point p = new Point();

mapToPojo(map, p);

System.out.println("横坐标:" + p.getX() + "\t纵坐标:" + p.getY());

Map map2 = new HashMap();

pojoToMap(p, map2);

for (Iterator iterator = map2.entrySet().iterator(); iterator.hasNext();) {

Entry en = (Entry) iterator.next();

System.out.println(en.getKey() + "=" + en.getValue());

}

String field = "aaaBbbbbCc";

System.out.println(fieldToDbColum(field));

}

}

public class JavaBeanDateUtil {

public static final String defaultDatePattern = "yyyy-MM-dd";

public static final String defaultDateTimePattern = "yyyy-MM-dd HH:mm:ss";

public static final String defaultTimestampPattern = "yyyy-MM-dd HH:mm:ss.SSS";

public JavaBeanDateUtil() {

}

public static String dateFormat(Object dateObj) {

return dateFormat(dateObj, null);

}

public static String dateFormat(Object dateObj, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern == null ? defaultDatePattern : pattern, Locale.CHINA);

if (dateObj == null) {

return null;

} else if (dateObj instanceof Date || dateObj instanceof java.util.Date) {

java.util.Date date = new java.util.Date(((Date)dateObj).getTime());

return sdf.format(date);

} else if (dateObj instanceof Calendar) {

java.util.Date date = ((Calendar)dateObj).getTime();

return sdf.format(date);

} else if (dateObj instanceof Time) {

java.util.Date date = new java.util.Date(((Time)dateObj).getTime());

return sdf.format(date);

} else if (dateObj instanceof Timestamp) {

java.util.Date date = new java.util.Date(((Timestamp)dateObj).getTime());

return sdf.format(date);

}

return null;

}

public static java.util.Date toDate(String dateStr) {

String pattern = "yyyy-MM-dd";

if (dateStr.indexOf(".") > 0) {

pattern = "yyyy-MM-dd HH:mm:ss.SSS";

} else if(dateStr.indexOf(":") > 0) {

pattern = "yyyy-MM-dd HH:mm:ss";

}

return toDate(dateStr, pattern);

}

public static java.util.Date toDate(String dateStr, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern == null ? defaultDatePattern : pattern, Locale.CHINA);

java.util.Date dateReturn = null;

try {

dateReturn = sdf.parse(dateStr);

} catch (ParseException e) {

System.out.println((new StringBuilder("unknown date format:")).append(dateStr).toString());

}

return dateReturn;

}

public static Calendar toCalendar(String dateStr) {

return toCalendar(dateStr, null);

}

public static Calendar toCalendar(String dateStr, String pattern) {

java.util.Date date = toDate(dateStr, pattern);

Calendar calendarReturn = Calendar.getInstance();

calendarReturn.setTime(date);

return calendarReturn;

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-05-10 10:41

浏览 849

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值