记录一次使用java反射解决的问题

	首先介绍一下我遇到的问题,由于之前同事设计表有问题(将人员不同类型的数据全部拆到不同的数据表中,导致人员相关的数据表有10几张),这10几张表的除了itemCode不同之外其他字段几乎一样,导致每一次查询列表或者在做更新操作的时候,都需要根据itemCode去写很多 if else 操作。如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/b7683983e4874b99be753713c58c367d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARGFuaWVs5aSn5qCR,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
	最近在有一个需求,需要对人员数据进行更新操作,而且是每一种itemCode的人员都需要对那几个字段进行更新,如果按照以往的思路肯定也是写一堆的if else进行操作,但这次,我打算使用反射的方式。
	首先我第一步使用的是将每一个itemCode对应的mapper接口抽取到Enum中,key是itemCode value是对应的mapper接口文件的路径,当itemCode过来的时候根据code获取mapper的具体接口名+地址,
		String clasName = ItemEnum.getValue(itemCode);

再通过Class clz = Class.forName(clasName);
拿到Class对象,具体步骤如下:
在这里插入图片描述
对象拿到之后就可以调用更新的方法了,最后调用method的invoke方法将对象和更新的参数进去执行就可以了。
这里在获取动态代理类实例的时候用到了SqlSession做注入,以及自定义了一个实现了InvocationHandler的Handler
在这里插入图片描述
简单的描述一下Java的反射:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制。反射可以获取对象所有的public属性和和方法,对于私有的或者是受保护的,需要将setAccessible设置为true来访问它的私有属性和方法,并且对于普通的类,在使用反射时要被反射的类还必须提供一个无参的构造方法。
以上内容只是大概描述了一下自己使用反射解决的问题,java反射还有很多东西,也需要慢慢学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值