直接看代码吧,只要执行子类的mk方法,就可以 一次性set多个值
/*
* 文 件 名:
* 版 权:
* 描 述: <描述>
* 修 改 人: nanshouxiao
* 修改时间: 2015年8月19日
* 跟踪单号: <跟踪单号>
* 修改单号: <修改单号>
* 修改内容: <修改内容>
*/
package ;
import ;
import ;
import ;
import ;
import ;
import ;
/**
* bean的基类所有的pojo都可以选择性的继承此类
*
* @author nanshouxiao
* @version [版本号, 2015年8月19日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public abstract class BaseBean <T extends BaseBean> implements Serializable
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
/**
* 如果要调用此参数
* @param args
* @return
*/
public T mk(Object ... args)
{
Map<? extends Object, Object> paramMap = (args);
// 取出bean里的所有方法
Method[] methods = ().getMethods();
for (int i = 0; i < ; i++)
{
// 取方法名
String method = methods[i].getName();
// 取出方法的类型
Class[] cc = methods[i].getParameterTypes();
if ( != 1)
continue;
// 如果方法名没有以set开头的则退出本次for
if (("set") < 0)
continue;
// 类型
String type = cc[0].getSimpleName();
try
{
// 转成小写
// Object value = (3).toLowerCase();
Object value = (3, 4).toLowerCase() + (4);
// 如果map里有该key
if ((value) && (value) != null)
{
// 调用其底层方法
(type, (value), i, methods, this);
}
}
catch (Exception e)
{
();
}
}
return (T)this;
}
/**
*
* 以下方法为测试basebean新添加的 mk方法。
* 也是为后面的人提供一个调用的demo,请不要删除
*
*
*/
public static void main(String[] args)
{
TestBean bean = new TestBean().mk("name","wanglei","age",1);
(bean);
}
public static class TestBean extends BaseBean<TestBean>
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
= name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
= age;
}
}
}
打印结果
需要的mapUtils也开源给大家。
package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
/**
* map工具类
*
* @author wanglei
* @version [版本号, 2015年7月2日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class MapUtils
{
/**
* 根据条件将符合条件的key 匹配出来并返回
*
* @param pattern 匹配条件
* @param map 需要查找key的map
* @return 符合条件key的集合
*/
public static List<String> getKeys(String pattern, Map<String, ? extends Object> map)
{
Set<String> keys = ();
boolean isStartWtidCheck = false;
boolean isEndWtidCheck = false;
String startWidthStr = null;
String endWithStr = null;
List<String> resultKeys = new ArrayList<String>();
if (("*"))
{
isEndWtidCheck = true;
endWithStr = ("*", "");
}
else if (("*"))
{
isStartWtidCheck = true;
startWidthStr = ("*", "");
}
else
{
isStartWtidCheck = true;
isEndWtidCheck = true;
String[] tempArray = ("*");
startWidthStr = tempArray[0];
endWithStr = tempArray[1];
}
for (String key : keys)
{
// 如果两个条件都具备才可以添加
if (isStartWtidCheck && isEndWtidCheck && (startWidthStr) && (endWithStr))
{
(key);
}
// 如果只匹配结尾
else if (isEndWtidCheck && (endWithStr))
{
(key);
}
// 如果只匹配开始
else if (isStartWtidCheck && (startWidthStr))
{
(key);
}
}
return resultKeys;
}
/**
* 清除空的key 设置为null
*
* @param map 需要清除的map
* @return 清除后的map
*/
public static Map<String, Object> clearEmptyKey(Map<String, Object> map)
{
Set<String> set = ();
for (String key : set)
{
if (((key)))
{
(key, null);
}
}
return map;
}
/**
* 将bean转换为map
*
* @param obj 需要转换的bean
* @return map
*/
public static Map<String, Object> bean2Map(Object obj)
{
if (obj == null)
{
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try
{
List<Field> fieldList = (obj);
Field field = null;
// 循环时倒序,先给父类属性赋值,后给子类属性赋值
for (int i = () - 1; i >= 0; i--)
{
field = (i);
// 如果属性修饰符是private static final,跳过
if (() == 26)
{
continue;
}
(true);
((), (obj));
}
}
catch (Exception e)
{
("transBean2Map Error " + e);
}
return map;
}
/**
* map 转 Bean
*
* @param <T>
*
* @param map
* @param cls
* @return
*/
public static <T> T map2Bean(Map map, Class<T> cls)
{
T obj = null;
try
{
obj = ();
}
catch (Exception e)
{
();
}
// 取出bean里的所有方法
Method[] methods = ();
for (int i = 0; i < ; i++)
{
// 取方法名
String method = methods[i].getName();
// 取出方法的类型
Class[] cc = methods[i].getParameterTypes();
if ( != 1)
continue;
// 如果方法名没有以set开头的则退出本次for
if (("set") < 0)
continue;
// 类型
String type = cc[0].getSimpleName();
try
{
// 转成小写
// Object value = (3).toLowerCase();
Object value = (3, 4).toLowerCase() + (4);
// 如果map里有该key
if ((value) && (value) != null)
{
// 调用其底层方法
setValue(type, (value), i, methods, obj);
}
}
catch (Exception e)
{
();
}
}
return obj;
}
public static void setValue(String type, Object value, int i, Method[] method, Object bean)
{
if (value != null && !(""))
{
try
{
if (("String"))
{
// 第一个参数:从中调用基础方法的对象 第二个参数:用于方法调用的参数
method[i].invoke(bean, new Object[] {value});
}
else if (("int") || ("Integer"))
{
method[i].invoke(bean, new Object[] {new Integer("" + value)});
}
else if (("double") || ("Double"))
{
method[i].invoke(bean, new Object[] {new Double("" + value)});
}
else if (("float") || ("Float"))
{
method[i].invoke(bean, new Object[] {new Float("" + value)});
}
else if (("long") || ("Long"))
{
method[i].invoke(bean, new Object[] {new Long("" + value)});
}
else if (("boolean") || ("Boolean"))
{
method[i].invoke(bean, new Object[] {("" + value)});
}
else if (("BigDecimal"))
{
method[i].invoke(bean, new Object[] {new BigDecimal("" + value)});
}
else if (("Date"))
{
Date date = null;
if (().getName().equals(""))
{
date = (Date)value;
}
else
{
String format = ((String)value).indexOf(":") > 0 ? "yyyy-MM-dd hh:mm:ss" : "yyyy-MM-dd";
SimpleDateFormat sf = new SimpleDateFormat();
(format);
date = ((String)(value));
}
if (date != null)
{
method[i].invoke(bean, new Object[] {date});
}
}
else if (("byte[]"))
{
method[i].invoke(bean, new Object[] {new String(value + "").getBytes()});
}
}
catch (Exception e)
{
("将linkHashMap 或 HashTable 里的值填充到javabean时出错,请检查!");
();
}
}
}
/**
* 非空验证
*
* @param paramMap
* @param checkField 必填字段
* @return 200 验证成功
*/
public static String isNotService(Map<String, Object> paramMap, String... checkField)
{
try
{
// 字段
String nullField = checkParam(paramMap, checkField);
if (() != 0)
{
return "field is null:" + nullField;
}
}
catch (Exception e)
{
();
return "serverError";
}
return "200";
}
/**
* 获取哪些参数为空
*
* @param paramMap 参数map
* @param checkField 需要检查的字段集合
* @return 如果没有错误返回"" 如果有错误返回 错误的字段用逗号分割
*/
public static String checkParam(Map<String, Object> paramMap, String... checkField)
{
List<String> nullFieldList = new ArrayList<>();
if (checkField == null)
{
return "";
}
for (String fieldName : checkField)
{
if (!(fieldName))
{
(fieldName);
}
}
if (() == 0)
{
return "";
}
return (nullFieldList);
}
/**
* 根据参数组织一个map 单数 为key 双数为val
*
* @param argsArray 参数数组
* @return map
*/
public static Map<? extends Object, Object> getMapFromArgs(Object[] argsArray)
{
Map<Object, Object> resultMap = new HashMap<>();
for (int i = 0; (i + 1) < ; i = (i + 2))
{
(argsArray[i], argsArray[i + 1]);
}
return resultMap;
}
/**
* 将list中的某个参数当key,某个参数当value组建map
*
* @param list
* @param key map的key对应的list中字段的key
* @param value map的value对应的list中字段的key
* @return
*/
public static Map<String, Object> list2Map(List<Map<String, Object>> list, String key, String value)
{
Map<String, Object> map = new HashMap<String, Object>();
String paramKey = null;
for (Map<String, Object> paramMap : list)
{
paramKey = ((key));
if (!(paramKey))
{
(paramKey, (value));
}
}
return map;
}
static class Test
{
private String pKey;
public String getPKey()
{
return pKey;
}
public void setPKey(String pkey)
{
= pkey;
}
}
}