使用反射,可以对实体类中的所有String类型的成员变量的值执行trim操作

(1)trim

/**** 对object中的所有成员变量的值,执行trim操作<br>* 即去掉首尾的空格* @param obj* @throws SecurityException* @throws NoSuchFieldException* @throws IllegalArgumentException* @throws IllegalAccessException*/public static void trimObject(Object obj) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{if(obj==null){return;}List<Field> fieldsList =getAllFieldList(obj.getClass());for(int i=0;i<fieldsList.size();i++){Field f=fieldsList.get(i);Object vObj=getObjectValue(obj,f );if(f.getType().getName().equals("java.lang.String") && (vObj instanceof String) ){String str=(String)vObj;if(str!=null){str=str.trim();f.setAccessible(true);f.set(obj, str);}}}}  

应用场景

// 是否清除成员变量的值前后的空格boolean isTrim2=false;String isTrim22Str=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING,"is_trim_columnValue");if(!ValueWidget.isNullOrEmpty(isTrim22Str)){isTrim2=Boolean.parseBoolean(isTrim22Str);}if(isTrim2&&user!=null){try {ReflectHWUtils.trimObject(user);} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}

(2)把值为空字符串的成员变量设置为null

/**** 把对象中空字符串改为null* @param obj : 要修改的对象:java bean* @param isTrim : 是否清除成员变量的值前后的空格* @throws SecurityException* @throws NoSuchFieldException* @throws IllegalArgumentException* @throws IllegalAccessException*/public static void convertEmpty2Null(Object obj,boolean isTrim) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{if(obj==null){return;}List<Field> fieldsList =getAllFieldList(obj.getClass());for(int i=0;i<fieldsList.size();i++){Field f=fieldsList.get(i);Object vObj=getObjectValue(obj,f );if(f.getType().getName().equals("java.lang.String") && (vObj instanceof String) ){String str=(String)vObj;if(isTrim){//清除首尾的空格if(str!=null){str=str.trim();}}if(SystemHWUtil.EMPTY.equals(str)){
//                  System.out.println(f.getName());
//                  System.out.println(f.getType().getName());f.setAccessible(true);f.set(obj, null);}else{if(isTrim){//清除首尾的空格f.setAccessible(true);f.set(obj, str);}}}}}/**** 不trim* @param obj* @throws SecurityException* @throws NoSuchFieldException* @throws IllegalArgumentException* @throws IllegalAccessException*/public static void convertEmpty2Null(Object obj) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{if(obj==null){return;}convertEmpty2Null(obj, false/* isTrim */);}

应用场景:

// 是否清除成员变量的值前后的空格boolean isTrim2=false;String isTrim22Str=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING,"is_trim_columnValue");if(!ValueWidget.isNullOrEmpty(isTrim22Str)){isTrim2=Boolean.parseBoolean(isTrim22Str);}try {//把对象中空字符串改为nullReflectHWUtils.convertEmpty2Null(ordersDetail,isTrim2);if(!ValueWidget.isNullOrEmpty(ordersDetail.getToothOrders())){ReflectHWUtils.convertEmpty2Null(ordersDetail.getToothOrders(),isTrim2);//不需要再set一遍}if(!ValueWidget.isNullOrEmpty(ordersDetail.getProducts())){ReflectHWUtils.convertEmpty2Null(ordersDetail.getProducts(),isTrim2);//不需要再set一遍}} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}

转载于:https://blog.51cto.com/huangkunlun520/1599348

对实体类的所有String类型的成员变量值trim相关推荐

  1. java vo转map_javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map beanToMap(Object obj) { Map params = new HashM ...

  2. 使用 MyBatis 实体类里的 Double 类型查询不到值

    使用 MyBatis 实体类里的 double 类型查询不到值.查询实体类时,里面的 Integer 和 String 类型都可以查询到,update 各个属性也都可以修改成功. 因为 MyBatis ...

  3. java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )

    在Java语言中,String类型的成员变量的默认初始值是( ) 答:C.null 学生最主要的权利是() 答:受教育权 提倡教育要适合孩子的 "敏感期"的教育家是 答:蒙台梭利 ...

  4. 将任意一个对象中的所有String类型的成员变量所对应的字符串内容中的“a“改为“b“(封装成一个方法)

    import java.lang.reflect.Field;public class test06 {/** 将任意一个对象中的所有String类型的成员变量所对应的字符串内容中的"a&q ...

  5. javabean实体类对象转为Map类型对象的方法

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  6. 实体类与数据库字段类型

    实体类 /*实体类*/ @Column(precision = 12, scale = 3) private BigDecimal rate; //数据库字段类型 rate decimal(12,3) ...

  7. JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean...

    由于JAVA的基本类型会有默认值,例如当某个类中存在private  int age;字段时,创建这个类时,age会有默认值0.当使用age属性时,它总会有值.因此在某些情况下,便无法实现age为nu ...

  8. java string类api_java基础—String类型常用api

    1.字符串比较 equals equalsIgnoreCase  忽略大小写做比较 2.字符串拆分(切片) split String a = "lemon:python:Java" ...

  9. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型

    fmt:formatDate 的输出格式 fmt关于时间格式的输出 2004-5-31 23:59:59 2004-4-1 23:59:59 JSTL标签fmt:formatDate引起的中文乱码问题 ...

最新文章

  1. linux软中断的实现
  2. 【Java萌新】MyBatis-Plus案例
  3. 前端学习(2309):react之同级传值
  4. Bootstrap表单的默认布局
  5. Python机器学习:KNN算法之01KKN基础
  6. Kali Linux 网络扫描秘籍 第三章 端口扫描(一)
  7. ajaxfileupload 监听上传进度_一篇文章学会文件上传
  8. datatable自定义表单或者导出excel按钮,搜索
  9. 基于树莓派的sht20温湿度传感器应用(c语言)
  10. 更改适配器设置无法和计算机连接,win10系统更改适配器没有无线网络连接的设置技巧...
  11. java版溺尸刷怪塔_教程/溺尸陷阱 _ 《我的世界》中文Minecraft Wiki:最详细的官方我的世界百科...
  12. Warning: findDOMNode is deprecated in StrictMode
  13. android界面不显示,Android 可视化界面编辑器无法显示界面问题的终极解决方案
  14. 使用联想计算节点的方法整理
  15. 低版本cad如何打开高版本图纸?不用升级软件也可以搞定
  16. wps高亮怎么取消_一组WPS表格小技巧,简单实用
  17. 默默前行的livego--基于go语言的rtmp直播服务器
  18. Unable to prepare *** iPhone for development
  19. Ymir平台部署安装
  20. 艾司博讯:拼多多退店要多久才能开

热门文章

  1. docker卸载命令_使用docker完成生信分析环境搭建
  2. 重装系统找不到固态_重装系统时找不到固态
  3. java移动端接口测试_移动端质量体系之性能测试(上)
  4. 数学建模 随机动态规划
  5. GT Transceiver的复位与初始化(4)RX初始化和复位流程
  6. Verilog初级教程(3)Verilog 数据类型
  7. word转pdf后公式出现乱码怎么办?
  8. 【 Notes 】WLLS Algorithm of TOA - Based Positioning (include the two - step WLS estimator)
  9. 面试题编程题06-python 输入一个字符串,反转输出
  10. Vimium - 让Chrome高效工作的神器