数据库里面有一个Users表
表的字段为:
uname,age,sex,address
需要根据这些字段进行查询
如果什么条件都不输入则查询全部。
如只输了name只按uname进行查询
如输入了name 和age则按uname和age进行查询
依此类推
这样估计得判断10多次。。
如果字段再多些。。那判断起来非常的
所以在这里问一下有没有什么简单一点的办法。。
最好有个示例万分感谢
表的字段为:
uname,age,sex,address
需要根据这些字段进行查询
如果什么条件都不输入则查询全部。
如只输了name只按uname进行查询
如输入了name 和age则按uname和age进行查询
依此类推
这样估计得判断10多次。。
如果字段再多些。。那判断起来非常的
所以在这里问一下有没有什么简单一点的办法。。
最好有个示例万分感谢
if(name.length>0) where += " and uname='" + name + "'";
if(age.length>0) where += " and age=" + age;
if(address.length>0) where += " and address like '%" + address + "%'"
//依此类推
String sql = "select * from Users " + where
String where = " where 1=1";
if(name.length>0) where += " and uname='" + name + "'";if(ageFrom.length>0)
where += " and age>=" + ageFrom;if(ageTo.length>0)
where += " and age<=" + ageTo;if(address.length>0) where += " and address like '%" + address + "%'"
//依此类推
String sql = "select * from Users " + where
不过拼SQL要尽量避免
然后,通过类反射拿到这个Bean的所有属性,
循环取Bean的属性值,如果不为null,则拼装Sql的where条件部分。这样,就避免了大量if的问题,表或者条件数量变了,只需要改变bean的定义即可。
实际上,我们查询很多时候未必用"等于" 比如上面的age字段,还有address字段等, 很难用一个bean来实现通用性查询! 因为不知道那个列应该用like等操作.