/*** * Model属性名称转换适配* @author Administrator**/
public class BsModelPropAdapter {private BsModelPropAdapter(){}/*** 适配转换单个属性*/public static <T> T adapter(Record record,Class<T> modelClass){/*** record Map 转换 model 属性*/Record r = (Record)record;T model = null;try {model = modelClass.newInstance();Field[] fields = model.getClass().getDeclaredFields();/* 遍历映射关系  */for (Field field : fields) {field.setAccessible(true);if(field.getName().equals("serialVersionUID"))continue;if(field.getAnnotation(Ignore.class) != null)continue;if(field.getType() == int.class || field.getType() == Integer.class){field.set(model, NumberUtils.toInt(StringUtil.toString(r.get(field.getName()))));}else{field.set(model, r.get(field.getName()));}}} catch (Exception e) {e.printStackTrace();}return model;}/*** 适配转换集合*/@SuppressWarnings("unchecked")public static <T> List<T> adapterList(List<?> records,Class<T> modelClass){List<T> models = Lists.newArrayList();T model = null;List<Record> rs = (List<Record>)records;for (Record r : rs) {model = adapter(r,modelClass);models.add(model);}return models;}/*** 适配转换分页对象*/@SuppressWarnings("unchecked")public static <T> BsPageRow adapterPageRow(BsPageRow pg,Class<T> modelClass){List<T> models = Lists.newArrayList();List<Record> rs = (List<Record>)pg.getRows();models = adapterList(rs, modelClass);pg.setRows(models);return pg;}/*** 表单数据适配转换到对象属性* @param <T>*/public static <T> Record adapterByModel(Record record,Class<T> modelClass){Record r = (Record)record;T model = null;Record recordTo = new Record();try {model = modelClass.newInstance();Field[] fields = model.getClass().getDeclaredFields();/* 遍历映射关系  */for (Field field : fields) {field.setAccessible(true);if(field.getName().equals("serialVersionUID"))continue;if(field.getAnnotation(Ignore.class) != null)continue;recordTo.set(field.getName(), r.get(field.getName()));}} catch (Exception e) {e.printStackTrace();}return recordTo;}/*** 表单数据适配转换到对象属性* @param <T>*/public static <T> Record adapterByRecord(Class<T> modelClass){T model = null;Record recordTo = new Record();try {model = modelClass.newInstance();Field[] fields = model.getClass().getDeclaredFields();/* 遍历映射关系  */for (Field field : fields) {field.setAccessible(true);if(field.getName().equals("serialVersionUID"))continue;if(field.getAnnotation(Ignore.class) != null)continue;recordTo.set(field.getName(), field.get(field.getName()));}} catch (Exception e) {e.printStackTrace();}return recordTo;}/*** 表单数据适配转换到对象属性* @param <T>*/@SuppressWarnings("rawtypes")public static <T> Record adapterModelToModel(Object object,Class<T> modelClass){T model = null;Record recordTo = new Record();Class c = object.getClass();try {model = modelClass.newInstance();Field[] fields = model.getClass().getDeclaredFields();/* 遍历映射关系  */for (Field field : fields) {field.setAccessible(true);if(!checkType(field.getType()) || field.getAnnotation(Ignore.class) != null || field.getName().equals("serialVersionUID")) continue;PropertyDescriptor pd = new PropertyDescriptor(field.getName(), c);Method getMethod = pd.getReadMethod();// 获得get方法Object o = getMethod.invoke(object);// 执行get方法返回一个Objectif(field.getType() == int.class || field.getType() == Integer.class){recordTo.set(field.getName(),NumberUtils.toInt(StringUtil.toString(o)));}else{recordTo.set(field.getName(), o==null?"":o.toString());}}} catch (Exception e) {e.printStackTrace();}return recordTo;}public static boolean checkType(Object type) {if ((type == String.class) || (type == Integer.class) || (type == Integer.TYPE) || (type == Double.class)|| (type == Double.TYPE) || (type == Float.class) || (type == Float.TYPE)) {return true;}return false;}}

转载于:https://www.cnblogs.com/zt528/p/5438848.html

Model与Record转换适配相关推荐

  1. extjs重新激活grid_处理Extjs的gridpanel修改一条记录并重新加载store之后,已选项model的record并没有改变的问题...

    昨天做项目发现一个问题,当修改了grid中的一条选中记录,保存并刷新store之后再次点开或者读取该选中行record发现还是修改之前的值,但是当鼠标选中其它行并再次回到刚刚修改的记录之后,点开或者读 ...

  2. SAP CRM产品主数据应用里value node和model node的转换

    Sent: Thursday, February 28, 2013 6:58 PM 第二次点New ,lr_product变成value node,这个行为是一个expected的behavior: ...

  3. QT Basic 014 Model/View programming (模型、视图编程)

    前言:本文不是纯文本翻译,加入了对概念的理解,纯文本翻译,请看文后的一个链接. Model/View Programming Introduction to Model/View Programmin ...

  4. flutter空安全适配

    Flutter2新特性:空安全  标准linter   轻量级多引擎    全平台支持    性能优化    navigator2(声明式路由管理) 迁移工作:解决破坏改动     代码迁移到空安全 ...

  5. java model 中文乱码,java传值乱码解决方法

    在做JavaWeb时,总是时不时的会遇到中文传值乱码问题,在你把所有"ISO-8859-1"改成"UTF-8"发现还是没什么用.于是我就找到了一个百试百灵的方法 ...

  6. HandyJSON:Swift语言JSON转Model工具库

    背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本,再把对应数据展现到页面上. 但在编程的时候,处 ...

  7. Qt中model/view设计模式

    Qt Model/View 学习笔记 (一) Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的 功能上的分离给了开发人员更大的弹性来 ...

  8. 无人机坐标系定义与转换

    [x]作者简介:热爱科研的无人机(机器人)导航.制导.控制开发者. 如有错误,请指正,不吝感谢! 1.前言 我们在研究无人机.机器人.无人车等相关领域的导航.制导与控制算法时,需要了解各个坐标系的定义 ...

  9. Hello Qt(三十三)——Model/View官方文档

    一.Model/View框架简介 Qt4推出了一组新的项视图类,使用Model/View框架来管理数据与表示层的关系.Model/View框架带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示 ...

  10. 批量转换json到java bean工具说明

    说明: Json已经在现代程序中使用的越来越多,把json字符串转换为java bean也越来越常见. 我之前写了一个小程序,使用java开发,批量把json转换为java bean,直接拷贝到项目中 ...

最新文章

  1. C语言 文件操作10--配置文件读写
  2. why my detail page in SAP UI5 application is failed to be loaded from router
  3. Python读取Json字典写入Excel表格的方法
  4. Java数据结构--HashTable(拉链法)
  5. 我做技术的这十年,我不做技术的这一年~
  6. 大容量导入和导出数据 -- 格式化文件生成
  7. 图论 —— 图的遍历 —— 欧拉通路与欧拉回路问题
  8. latex 公式编号_放弃mathtype,word也可以轻松输入公式
  9. graphics | 基础绘图系统(十)——星形图、四瓣图、马赛克图
  10. 端口镜像在网络安全中的应用
  11. office文档 在线预览 (doc、ppt、xls)
  12. 14个非常有用的jquery技巧,注意事项和最佳实践
  13. Android开机动画的动态替换
  14. Decision Tree决策树
  15. java uclinux_Java在基于uclinux的嵌入式系统中的应用
  16. 领英改版后无法搜索开发客户?解决方法来了,恢复后可以继续在领英搜索开发客户。
  17. Springboot 下载文件
  18. RandomAccess接口详解
  19. 微信小程序播放背景音乐
  20. 常见排序方法 <十种排序方法>

热门文章

  1. mysql实现主从复制的方式_mysql实现主从复制、读写分离的配置方法(二)
  2. python3之线程
  3. 【EF】EF框架 Code First Fluent API
  4. 浅谈客服中心员工情绪管理这件事
  5. linux下的终端利器----tmux
  6. 用好Windows 7自带文件加密工具
  7. 《Java程序员,上班那点事儿》征文活动获奖名单
  8. jdk Arrays类
  9. 总结01-bms-molecular-translation分子翻译大赛
  10. 二分法求函数方程根的matlab实现(内附例题和代码)