需求场景:适配不同类型数据库,由于Mysql 返回小写,Oracle返回的字段列是大写,为了方便前台统一处理,使用反射的方式来进行数据转换。
代码如下:
public class BeanUtil {
/**
* 大小写可以忽略
* 下划线 _ 被忽略
* NULL值和空字符串不会覆盖新值
*
* @param source
* @param target
* @param <T>
* @return
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static <T> T copyProperties(Map<String,Object> source, Class<T> bean) throws Exception {
Map<String, Object> sourceMap = new HashMap<String, Object>();
source.entrySet().forEach(entry -> {
String key = entry.getKey().toLowerCase().replace("_", "");
sourceMap.put(key, entry.getValue());
});
T target = bean.newInstance();
CacheFieldMap.getFieldMap(bean).values().forEach((it) -> {
Object field = sourceMap.get(it.