最近在用mybatis做项目,遇到将date格式化显示到easyui的问题,需要将List<Map<String, Object>>转化为List<JavaBean>,研究好久,终于在网上找到了一个方法:
核心方法如下:
[java] view plain copy
- /**
- * 根据List<Map<String, Object>>数据转换为JavaBean数据
- * @param datas
- * @param beanClass
- * @return
- * @throws CommonException
- */
- public List<T> ListMap2JavaBean(List<Map<String, Object>> datas, Class<T> beanClass) throws CommonException {
- // 返回数据集合
- List<T> list = null;
- // 对象字段名称
- String fieldname = "";
- // 对象方法名称
- String methodname = "";
- // 对象方法需要赋的值
- Object methodsetvalue = "";
- try {
- list = new ArrayList<T>();
- // 得到对象所有字段
- Field fields[] = beanClass.getDeclaredFields();
- // 遍历数据
- for (Map<String, Object> mapdata : datas) {
- // 创建一个泛型类型实例
- T t = beanClass.newInstance();
- // 遍历所有字段,对应配置好的字段并赋值
- for (Field field : fields) {
- // 获取注解配置
- JavaBean javaBean = field.getAnnotation(JavaBean.class);
- if(null != javaBean) { // 有注解配置,下一步操作
- // 全部转化为大写
- String dbfieldname = javaBean.dbfieldname().toUpperCase();
- // 获取字段名称
- fieldname = field.getName();
- // 拼接set方法
- methodname = "set" + StrUtil.capitalize(fieldname);
- // 获取data里的对应值
- methodsetvalue = mapdata.get(dbfieldname);
- // 赋值给字段
- Method m = beanClass.getDeclaredMethod(methodname, field.getType());
- m.invoke(t, methodsetvalue);
- }
- }
- // 存入返回列表
- list.add(t);
- }
- } catch (InstantiationException e) {
- throw new CommonException(e, "创建beanClass实例异常");
- } catch (IllegalAccessException e) {
- throw new CommonException(e, "创建beanClass实例异常");
- } catch (SecurityException e) {
- throw new CommonException(e, "获取[" + fieldname + "] getter setter 方法异常");
- } catch (NoSuchMethodException e) {
- throw new CommonException(e, "获取[" + fieldname + "] getter setter 方法异常");
- } catch (IllegalArgumentException e) {
- throw new CommonException(e, "[" + methodname + "] 方法赋值异常");
- } catch (InvocationTargetException e) {
- throw new CommonException(e, "[" + methodname + "] 方法赋值异常");
- }
- // 返回
- return list;
- }
原文地址:https://www.cnblogs.com/tanzq/p/8443501.html
时间: 2024-11-02 18:19:34