又说到适应各数据库的sql语句了。
最近平台系统(程序员内部为开发其他页面自己用的平台)老是要跨,搞得我们sql改来改去,现在boss想法都兼容吧,所以这需要把各数据库的专有函数去掉。
然后在这种sql上遇到问题“
select d.data_group_key,ifnull(l.data_group_value,d.data_group_key)data_group_value,d.remark
from ctrl_data_group d.............
”
ifnull(mysql),isnull(sqlserver)的。
要求是在改的时候避免性能慢的问题,你不能改出一个降低后台运行速度。
重点来了,开始在网上找资料,发帖求大神。然后找到如下两点
1、写两套sql,在配置文件上判断(之前项目就有过两套sql)。被否决!!!原因在于,你前台每一次的请求都要去经过配置文件判断,使程序变得缓慢。
2、把要查的结果都写出来,然后在controller层做处理,请求的数据是多条的话,经过两次循环遍历,如果请求值为null,就替换掉。被否决!!! 循环遍历两次还是上面同样的问题。
差不多三四天的样子,找不到适合的。急!
后来boss看不下去了,亲手指点,出现了第三个方案。
3、实例它的查询字段,在实体里面判断。做完一看太简单了。我就直接上图
请求类型改成实体类的地址。如果数据有空,就用其他值代替,数据还是List接收,用的spring+springmvc。
之前sql
改动sql