JDBC用反射机制查询oracle数据时字段大写的解决办法(Beanutils.setProperty与ReflectionUtils.setFieldValue)

首先问题原因如下:

在查询语句里面Mysql返回的字段名称为数据库字段的名称格式。如:fileName字段 输出 fileName

但,oracle数据库返回的字段名称则全部为大写字段。如:fileName字段 输出 FILENAME

所以,当两中数据库都用如下方法去匹配类中对应的字段变量时,会报如下错误

java.lang.IllegalArgumentException: Could not find field [LOCATION] on target [Student [flowId=0, type=0, idCard=null, examCard=null, studentName=null, location=null, grade=0]]

这是因为大小写的问题,Oracle是没有办法进行操作,而导致配不到该字段所致。

// 5. 若 Map 不为空集, 利用反射创建 clazz 对应的对象
if (values.size() > 0) {
	entity = clazz.newInstance();

	// 5. 遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.
        for (Map.Entry<String, Object> entry : values.entrySet()) {
		String fieldName = entry.getKey();
		Object value = entry.getValue();
		ReflectionUtils.setFieldValue(entity, fieldName, value);
	}
}

作为替代办法,我现在改用 Beanutils 类进行修改。主要使用该类下的setProperty()方法。

BeanUtils.setProperty(Object, name, value);

Object :是实例化的类

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值