解决方案 »

  1.   

    我的意思是这样的 
    A模块中 有个select a,b,c from ........
    B模块中 有个select a,b from.....
    其他的都相同,那么这两个sql 我只能在自己的模块中进行定义 ,沉不到公共模块c中
    现在就因为查询的字段不同 而重复其他的部分。
    我在想是否是就这样了还是有什么其他的办法 在不影响可读性的前提下 进行内聚
      

  2.   

    "select "+sql+" from ........"  sql里面包含参数就行了吧
      

  3.   

    对于代码优化,可能大家想到的多数是代码复用,看到有相似的内容就想整合。其实,这是一个误区,真正的代码优化是要考虑代码的意义,本着原子性的原则去优化,做到一个方法只完成一件事。当新增一个类的时候,就要规划好这个类的作用,面向对象来讲,就是说这个类代表了一个什么对象,需要有什么功能。新增一个方法就要考虑它完成的是一个什么任务。
    举个列子来讲:
    void getResult(){
           System.out.println(getOne()*getTwo());
    }
    对于这个方法,虽然它只有一行代码,但是它仍然需要优化,因为它在一个方法中做了两件事。一打印,二计算结果
    而对于你提出的问题,需要考虑的是,你A中的方法和B中的方法完成的是相同的任务吗?如果是,可以提取到超类中。另外还要考虑日后的可变性,如果可能存在A的逻辑需要修改,而B不变,则建议不要合并。
    希望我说的能对你有帮助...
      

  4.   


    你这都是查询同一个表是吧
    你可以在拼sql那里封装一下
    做到同一个方法,要查什么参数 就传什么参数过去
    然后再拼sql语句
    这样你AB2个方法都掉C的同一个方法 根据参数的不同
    返回不同结果
      

  5.   

    如果只是字段不同,完全可以在通用的service层和dao层定义为一个抽象内的同一个方法(),字段参数通过 数组 传递,在方法内部遍历数组参数化 赋值
      

  6.   


    你的意思我明白,现在是mybatis来进行sql配置的,sql文件都是在xml中,如果同一个方法根据参数不同,然后通过mybatis标签进行拼接的话 会使可读性很差啊
      

  7.   


    你把所有字段都查出来不就行了。
    例如:表A中有10个字段,你把10个字段都查出来。
    在方法A中用了3个字段,方法B中用了5个字段,方法C中用了7个字段,你就不用再写3个dao了,而一个查询了10个字段的dao不就够用了?
      

  8.   


    你的意思我明白,现在是mybatis来进行sql配置的,sql文件都是在xml中,如果同一个方法根据参数不同,然后通过mybatis标签进行拼接的话 会使可读性很差啊
    那没办法 用别人的东西就会丢失一些灵活性