获取默认值的一个问题

     以前项目中有一步获取默认值,是全部通过批量执行select查询的,建立了一个defautValue表(有code,field字段),和一个存储sql表,两个表通过一个code字段关联。就是通过code来获取哪些field需要对应哪些sql。有的需要根据传参数查询数据库,有的其实是定值,为了方便写成了select 常量 from dual。然后在set默认值时,就批量的查询,把值set到对应的field。现在给默认值表加了一个默认值字段,如果有默认值,那么code为空,如果没有,就要有code。这样用join连接时就会出现
            code           field           defaultValue       sql 
            code1          field1              null             SELECT *** FROM 
            null              field2               1                   null
            code2          field3              null             SELECT XX FROM 

以前就直接批量执行sql,然后得到一个Map就set到对应的field了。现在这么做怎么处理呢?

join的时候不要直接join表,而是join一个子查询,子查询中加上判断
select if(code = null, defaultvalue, code) as code, ... from table

如果是oracle建议你用序列来实现,这个最方便,不会重复

那也没用啊,其实不用IFNULL或者NVL,直接连表,defaultValue字段也是有值的。问题就在于,以前的做法是批量执行select,每个field都对应一个select最后返回一个map。现在这样查询出来显然是不能批量执行sql查询的。