/**
* 属性值为null和空的时候设置默认值
*
* @param demo 实体类
*/
private static void defaultValue(Object demo) {
	try {
		Class<?> aClass = demo.getClass();
		Field[] declaredFields = aClass.getDeclaredFields();
		List<String> fieldName = new ArrayList<>();
		for (Field field : declaredFields) {
			field.setAccessible(true);
			String name = field.getName();
			if (!"".equals(name)) {
				fieldName.add(name);
			}
		}
		for (String s : fieldName) {
			Method method = aClass.getMethod("get" + s.substring(0, 1).toUpperCase() + s.substring(1));
			Object invoke = method.invoke(demo);
			if (invoke == null || "".equals(invoke)) {
				Field field = aClass.getDeclaredField(s);
				field.setAccessible(true);
				String typeName = field.getGenericType().getTypeName();
				if (typeName.contains("String")) {
					field.set(demo, "1");
				} else if (typeName.contains("Integer")) {
					field.set(demo, 0);
				} else if (typeName.contains("Double")) {
					field.set(demo, 0.0);
				} else if (typeName.contains("BigDecimal")) {
					field.set(demo, BigDecimal.valueOf(0));
				} else if (typeName.contains("Date")) {
					field.set(demo, new Date());
				} else if (typeName.contains("Boolean")) {
					field.set(demo, true);
				}
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

测试

/** 创建User实体类 */
@Data
public class User {
	private Integer id;
	private String name;
	private String sex;
	private Date loginDate;
	private boolean isState;
}
public static void main(String[] args) {
	User user = new User();
	user.setId(1);
	user.setIsState(false);
	System.out.println("设置默认值之前 = "+user);
	//设置默认值之前 = User(id=1, name=null, sex=null, loginDate=null, isState=false)
	defaultValue(user);
	System.out.println("设置默认值后 = "+user);
	//设置默认值后 = User(id=1, name=1, sex=1, loginDate=Tue May 03 17:10:06 CST 2022, isState=false)
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐