java代码优化问题。帮忙

请问这种代码如何重构优化。
我要根据变量ItemPlanViewName的值来确定查询哪张视图。这个值可能会有40个左右,也就是会有40多张视图
如果按照我现在这样写,到最后这个controller里面将会注入40多个service。并且会写40多个ifelse以及40多个mapper接口和mapper.xml文件
可是如果不这样写,我又不知道如何确定我查询的是哪张视图以及在xml里映射到哪个实体类中。
图片说明

反射,根据你的字符串,做一个变换,得到对应的xxxService类型的类名,然后反射调用它的findbyrssid方法

写个公用的Mapper文件,把sql传过去就OK了,你只需要在controller 里把sql拼好就行了。

反射调用object方法
http://blog.csdn.net/zhangzeyuaaa/article/details/42522015

你这40个view结构应该是相同的吧,可以考虑加个interceptor,在发sql之前根据条件修改sql语句,这样就不用建多个pojo,相当灵活,可以尝试下。

先抽象一个通用的类,然后用工厂模式及策略模式。这样以后扩展方便。

参考:http://www.importnew.com/21224.html

写个公用的Mapper文件,把sql传过去就OK了,你只需要在controller 里把sql拼好就行了

可以用集合解决,条件存入集合A,对应的类存入集合B,例如:

    List<String> listA = new ArrayList<>();
    List<BaseService> listB = new ArrayList<>();//BaseService是你所有service的父类

    //一一对应添加。(第一次)
    listA.add("V_VPP_PLS_SEQ_ITEM_PLT");
    listB.add(vPpPlsSeqItemPltSerice);//vPpPlsSeqItemPltSerice继承BaseService
    //一一对应添加。(第二次)
    listA.add("V_VPP_PLS_SEQ_ITEM_CA1");
    listB.add(vPpPlsSeqItemCa1Serice);//vPpPlsSeqItemCa1Serice继承BaseService
    ...
 你可以把添加数据再优化一下

写一个枚举的类专门用来存这个视图 然后用case when