java 多重if判断怎么优化 5C

if(id == null || id.isEmpty()){
if(type == null){
if(name==null || name.isEmpty()){
//...select..sql...
}else {
//...select..sql...
}
}else {
if(name==null || name.isEmpty()){
//...select..sql...
}else {
//...select..sql...
}
}
}else {
if(type == null){
if(name==null || name.isEmpty()){
//...select..sql...
}else {
//...select..sql...
}
}else {
if(name==null || name.isEmpty()){
//...select..sql...
}else {
//...select..sql...
}
}
}

17个回答

看if之间的“包含”与“并列”关系,从而判断if之间的关系!

if () return;

//somecode

不过你上面的代码我觉得没必要优化

这个具体情况具体处理。一个参考建议是判是改成判否。比如:
if (boolean-expression1) {
if(boolean-expression2) {
doSomething();
}
}
改成
if (!boolean-expresssion1) {
return;
}
if (boolean-expression2) {
doSomething();
}

不管怎么判断,其实就是判断的地方可以有选择性,比如在页面上判断,比如java中判断,比如mybatis中判断。无非是这几种方式。如果以上30个字段都是必填项
可以在页面中进行为空判断,使用插件。可以省掉很多代码量。

你判断空应该是用来判断是否按此条件查询查询的吧,mybatis的动态sql就可以了。
按照你写的我写了一个动态sql,你可以参考下,应该有用:

SELECT * FROM TEST


AND ID =#{ id }


AND TYPE =#{ type }


AND NAME =#{ name }


SELECT * FROM TEST

AND ID =#{ id }

AND TYPE =#{ type }

AND NAME =#{ name }

xml竟然被影藏了,上个截图吧图片说明

共17条数据 首页 2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问