匹配查询换个查询方式可能更加简洁和可拓展

匹配查询的需求:

  查询出匹配类型的所有匹配的结果。

比如:

  用户手机号匹配:联系人手机号,银行预留手机号,担保人手机号。

  银行预留手机号匹配:用户手机号、联系人手机号、担保人手机号。

  。。。

 

我前面的思路是根据需求来决定的,就是一种匹配类型就一个sql,也就是一个匹配类型然后inner join 或者left join多张表,where 指定条件。

勉强写完了,但是感觉很乱,不是方便拓展和维护。

 

师傅看了我的代码,修改成这个样子:

  匹配子选项:

    1 - 用户手机号

    2 - 银行预留手机号

    3 - 联系人手机号

    4 - 担保手机号

  那么前面的两个匹配的话就成为了:

    (1-3,1-2,1-4),(2-1,2-3,2-4)

  sql变成接收一个List集合,遍历集合进行条件判断:

    SELECT ...

    FROM ... LEFT(INNER、RIGHT) JOIN ...,

    WHERE

    FOR(String pattern :Patterns){

      switch(pattern){

        case '1-3':  and ......; break;

        case '1-4':  and ......; break;

        case '1-2':  and ......; break;

        case '2-1':  and ......; break;

        case '2-3':  and ......; break;

        case '2-4':  and ......; break;

      }

    }

  

 

posted @ 2017-02-24 12:41  guodaxia  阅读(93)  评论(0)    收藏  举报