使bean中为null的属性转换成空字符串

获得getter方法
方法有分带参数和不带参数,我们知道getter方法是不带参数的
获得getter方法如下

Method m = model.getClass().getMethod("get"+name);

获得setter方法
如果是带参数的setter方法,就应该把参数的类型做封装成一个Class<?>泛型数组传入getMethod方法的第二个参数
例如参数是String类型的setter方法如下

Method m = model.getClass().getMethod("set"+name, new Class[] {String.class});

执行getter方法

String value = (String) m.invoke(model);

执行setter方法

m.invoke(model,new Object[] {new String("new value")});

以上转自https://blog.csdn.net/special_programmer/article/details/79995491
根据这俩东西可以使bean中为null的属性值转换成空字符串

package com.tianwu.common.util;import com.google.common.collect.Maps;
import org.springframework.cglib.beans.BeanMap;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
public class BeanHelper {
/*** @description: 使bean中为null的属性转换成空字符串* @param [bean]* @return void * @throws * @author TZH* @date 2019/5/30 11:24 */public static <T> void  nullToEmpty(T bean){Field[] field = bean.getClass().getDeclaredFields();for (int j = 0; j < field.length; j++) {     //遍历所有属性String name = field[j].getName();    //获取属性的名字//将属性的首字符大写,方便构造get,set方法name = name.substring(0, 1).toUpperCase() + name.substring(1);String type = field[j].getGenericType().toString();    //获取属性的类型if (type.equals("class java.lang.String")) {   //如果type是类类型,则前面包含"class ",后面跟类名try {Method mGet = bean.getClass().getMethod("get" + name);String value = (String) mGet.invoke(bean);    //调用getter方法获取属性值if (value == null || "".equals(value)) {Method mSet = bean.getClass().getMethod("set"+name, new Class[] {String.class});mSet.invoke(bean,new Object[] {new String("")});}} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}

将JAVA bean/实体类 中为null的属性值转换成空字符串相关推荐

  1. 关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别

    关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别: Pojo: Pojo 普通的java对象 最基本的javaBean只有属性 加上属性的get,set方法,可以转 ...

  2. java采用匈牙利命名法_【Java】工具类,如何将匈牙利命名法转换成驼峰命名法-Go语言中文社区...

    一.概念介绍 1.1.匈牙利命名法:user_id,字母均小写,不同单词间用下划线分割: 1.2.驼峰命名法:userId,除了第一个单词的首字母小写,其余单词的首字母均大写,单词之间没有符号,仅仅通 ...

  3. CodeFirst实体类中,为什么都把ICollectionx定义成virtual?

    主要是用于延迟加载,提高性能用的 只有定义成virtual后才可以延迟加载. 延迟加载,默认情况下,延迟加载被支持,如果你希望禁用它,必须显式声明,最好的位置是在 DbContext 的构造器中. p ...

  4. Java 判断实体类对象的全部属性是否空

    代码: public boolean checkObjAllFieldsIsNull(Object object) {// 如果对象为null直接返回trueif (null == object) { ...

  5. java实体类中有枚举类型_当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?...

    当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...

  6. Android中的两个Activity用Intent来传递java bean实体

    先定义java bean实体: public class MC_bean implements Serializable {private int code;private String messag ...

  7. java实体类没有映射文件_MyBatis自动生成实体类、DAO和XML映射文件,并去掉实体类中的getter和setter方法...

    今天花了3个多小时搞定了这个事情,写个Blog记录一下,先看一下最终生成的实体类吧. packagecom.mybatis.pojo;importlombok.AllArgsConstructor;i ...

  8. java 实体类中增加非数据库字段,同时兼容mybatis-puls与jpa

    原先项目使用的是 jpa + mybatis 来做持久层 ,jpa做增删改操作,mybatis做查,后来发现mybatis-puls也挺香的然后就把puls放了进来. 遇到的问题: 在实体类中加非数据 ...

  9. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题

    关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题 所遇到的问题: 在swagger-ui测试页面测试接口时,由于在实体类中添加部分临时的实体类导致测试文档过于冗杂 如图: 解决: po ...

最新文章

  1. 【论文笔记】APPLYING DEEP LEARNING TO ANSWER SELECTION: A STUDY AND AN OPEN TASK
  2. codebilcks怎么新建c++文件_电脑开机后桌面空白一个图标都没有,怎么回事?
  3. MariaDB(MySQL)数据库的介绍及使用示例
  4. 使对易失性字段的操作原子化
  5. SqlServer 备份还原教程
  6. jenkins部署三种构建方式的详细步骤
  7. php成员属性的声明方式,PHP中如何定义类及其成员属性与操作_PHP教程
  8. 什么是Python,如何安装使用Python
  9. 2020年我对大前端的认知,前端开发有哪些变化
  10. 深度优先搜索(DFS)
  11. matlab2c使用c++实现matlab函数系列教程- polyint函数
  12. Matlab实现单(双)极性(不)归零码
  13. caxa自动保存的文件在哪里_CAXA CAD教程之软件临时文件的清理
  14. word文档更新目录为什么更新不了?
  15. ROS学习(9)自定义移动机器人模型Gazebo仿真
  16. Android 编译速度优化方案
  17. python的函数导入方法
  18. 动态规划——贴纸拼词
  19. 易语言的按钮事件(破解小技巧)
  20. Keras少量样本训练强大图像分类模型

热门文章

  1. [转]作为黑客的你应该拥有的10个小工具
  2. verilog中的signed用法
  3. JAVA学习笔记(核心技术篇一)
  4. thinkPHP 接口访问限制
  5. UVA1335 Beijing Guards
  6. 2020春招 / 2021秋招阿里、腾讯、字节、快手、美团 JAVA 开发岗面试高频问题总结
  7. 使用java实现鱼刺图
  8. Trying to start MapKit location updates without prompting for location authorization. Must call -[CL
  9. “Adb connection Error:远程主机强迫关闭了一个现有的连接。”之我的解决方法。
  10. 【C语言总结】C语言预处理器