通过反射机制,使用字符串动态拼接成方法名
今天工作,本来在循环中计算得出值后,是加进集合中的,但是发现,数据表的结构是这个样子的:
对应的,实体类的属性就是这个样子的:
如果是这样,我就不能往insert
方法中传集合了,否则列根本对不上,只能传赋过31天值之后的对象。
那么问题来了,需要在循环中,根据当前遍历的次数,使用字符串动态拼接为方法名,向实体类对象中赋值,使用到了Java中的反射机制。
EnergyDayPlan energyDayPlan=new EnergyDayPlan(); //实体类
Class<?> c = energyDayPlan.getClass(); //获取到该类class
...
for(int i=1;i<=12;i++){
...
...
for(int j=1;j<=lastDayOfMonth;j++){
...
//字符串拼接成方法名,获取该方法
Method method=c.getMethod("setD"+j, BigDecimal.class);
//invoke代表执行该方法,第一个参数为该对象,第二个参数是该方法需要得到的参数,没有可以为空
method.invoke(energyDayPlan, avgArr[index]);
}
}