浅谈 BeanUtils 的封装 , BeanUtils 类中方法 populate (Object bean, Map properties ); 用于把 form 提交的表单中数据封装在 bean中;
request 中相比于 getParameter ( 标签 id ) 单个获取 属性值将 ,提高效率简化代码;
抽取为MyBeanUtils 以后,更为便捷 ,jar 下载地址 repository 仓库搜索下载: 使用 maven 可直接配置 依赖;
package cn.itzheng.store.utils;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
public class MyBeanUtils {
public static void populate(Object obj, Map<String, String[]> map) {
try {
// 由于BeanUtils将字符串"1992-3-3"向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器
// 1_创建时间类型的转换器
DateConverter dt = new DateConverter();
// 2_设置转换的格式
dt.setPattern(“yyyy-MM-dd”);
// 3_注册转换器
ConvertUtils.register(dt, java.util.Date.class);
BeanUtils.populate(obj, map);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static T populate(Class clazz, Map<String, String[]> map) {
try {
T obj=clazz.newInstance();
// 由于BeanUtils将字符串"1992-3-3"向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器
// 1_创建时间类型的转换器
DateConverter dt = new DateConverter();
// 2_设置转换的格式
dt.setPattern(“yyyy-MM-dd”);
// 3_注册转换器
ConvertUtils.register(dt, java.util.Date.class);
BeanUtils.populate(obj, map);
return obj;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
实例中使用场景,主要在注册 时候 form 表单提交的数据 进行封装 ;
实体bean ,User 类的成员属性 很多的时候 ,从request 请求中一个个获取 表单数据 效率低下 ,例如以下User 的成员属性如下:
如果按下面的这种方法做太过于复杂,如果数据量大,代码臃肿
//1.获取用户数据 封装到User对象中
String id = request.getParameter(“id”);
String name = request.getParameter(“name”);
String sex = request.getParameter(“sex”);
String address = request.getParameter(“address”);
String email = request.getParameter(“email”);
String qq = request.getParameter(“qq”);
String age = request.getParameter(“age”).equals(“”)?“18”:request.getParameter(“age”);
//2.封装数据
User user = new User();
user.setId(Integer.valueOf(id));
user.setName(name);
user.setSex(sex);
user.setAddress(address);
user.setEmail(email);
user.setQq(qq);