匹配查询换个查询方式可能更加简洁和可拓展
匹配查询的需求:
查询出匹配类型的所有匹配的结果。
比如:
用户手机号匹配:联系人手机号,银行预留手机号,担保人手机号。
银行预留手机号匹配:用户手机号、联系人手机号、担保人手机号。
。。。
我前面的思路是根据需求来决定的,就是一种匹配类型就一个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;
}
}

浙公网安备 33010602011771号