1.SQL语句里的if的嵌套使用
if(product ='A' and brand_name ='B','C',if(product ='A' and brand_name !='B','D',product)) as product
if(A,B,C)。SQL里if函数,如果条件A成立,就显示B的值,否则就显示C。
这个代码的意思的:
当该行数据product属性为A,且brand_name属性为B的时候,就用C来作为product列的值。
否则,就进入第二个if判断,当该行数据product属性为A,且brand_name属性不为B的时候,就用D来作为product列的值。否则,就用它原来的product的值。
其实就是3种情况,用if嵌套写出来了。当然,还可以继续嵌套下去。
if(product ='A' and brand_name ='B','C',if(product ='A' and brand_name ='E','D',if(product ='A' and brand_name ='F','G',product))) as product
2. sql语句一定先执行无误,再放到代码里。
不然如果是因为多一个)或者少一个(引起的SQL语法错误,寻找起来是很难的。
3.BeanUtils.batchTransform
可以直接 以list形式批量拷贝。
List<Person> personList = personRepository.findAll();
List<PersonDTO> personDTOList = BeanUtils.batchTransform(personDTO.class,personList)
4.label.substring(label.lastIndexOf("-")+1);
substring加lastIndexOf,就是截取自某个元素出现后的字符串。
String a = "191-12-23";
System.out.println(a.substring(a.lastIndexOf("-")));
System.out.println(a.substring(a.lastIndexOf("-")+1));
结果:
-23
23
所以一般用的是第二种,可以截取"-"之后的字符串。
5.尤其是在面对相似功能的接口时。思路要清晰。
现在调用的是哪个接口,是在哪个环境,哪一行代码出的问题。不能模糊。
6.这两种写法都可以避免SQL里的NULL
SUM(IF(push_status = 1, 1, 0))
IFNULL(SUM(CASE WHEN r.hangup = 'NORMAL_CLEARING' THEN 1 ELSE 0 END),0)。
当没有满足的数据时候,也会有个0,而不会是Null。