天天看点

Java中利用工具类对bean实体类所有属性统一赋值这里做一下简单的说明

Java中利用工具类对bean实体类所有属性赋值

  • 这里做一下简单的说明

这里做一下简单的说明

#1.我在实际开发过程中,调外部系统时,发送报文,报文会通过bean转换成xml的形式发送出去,这时候空的bean转换后的形式不符合要求,就需要给空的bean的属性赋空值。

#2.这里提供一个工具类,此工具类的作用是给bean实体类所有属性统一赋值,Stirng类型的属性赋值"",int类型的属性赋值0,BigDecimal类型的属性赋值0。目前只支持这三种类型,需要别的类型可自己进行工具类的修改,也可在下方留言。

工具类代码如下

import java.lang.reflect.Field;
import java.math.BigDecimal;

/**
 * 
 * @Description: 对象类bean操作
 * @author Yangshuxin
 *
 */
public class BeanValueUtil {

	/**
	 * @Title: setValue
	 * @Description: 给对象类bean的属性统一赋值
	 * @param s 待赋值的对象类bean
	 * @param value 给对象属性要赋的值(默认:String为"",int为0,BigDecimal为0)
	 * @throws Exception
	 * @author yangshuxin
	 * @date 2020-03-16 10:12:21
	 */
	public static void setValue(Object s, String value) throws Exception{
		
		try {
			Class<? extends Object> c = s.getClass();
			Field[] fs = c.getDeclaredFields();
			
			for(Field f:fs){
				//f为单个属性
				String name = f.getName();//获取属性名
				String type = f.getType().getSimpleName();
				Field d = c.getDeclaredField(name);
				d.setAccessible(true);
				if("String".equals(type)) {
					try {
						d.set(s, value);
					} catch (Exception e) {
						d.set(s, "");
						System.out.println("属性" + name + "赋默认值空");
					}
				}
				int valueInt = 0;
				if("int".equals(type)) {
					try {
						valueInt = Integer.parseInt(value);
						d.set(s, valueInt);
					} catch (Exception e) {
						d.set(s, valueInt);
						System.out.println("属性" + name + "赋默认值0");
					}
				}
				BigDecimal valueBigDecimal = new BigDecimal(0);
				if("BigDecimal".equals(type)) {
					try {
						valueBigDecimal = new BigDecimal(value);
						d.set(s, valueBigDecimal);
					} catch (Exception e) {
						d.set(s, valueBigDecimal);
						System.out.println("属性" + name + "赋默认值0");
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
		
	}
	
}