对公司现有框架对多条件查询的一个疑问

danliandejintou 2011-11-18 12:14:20
做多条件查询的时候,我首先想到的是根据传过来的参数动态拼凑sql。
比如有3个输入框age,name,score,现在用户只在age里输入值,传到后台后,我拼成一条where age=:age的语句来查询。
而公司现有的做法是先直接把所有的参数写进sql(where age=:age and name=:name and score=:score)里,然后调用它的工具方法,它会解析那条sql,将多余的查询参数(页面没有输入值的参数)忽略掉。
我刚想了许久,一直没想明白这样的好处是什么。
看了它的代码许久,也没看明白它是怎样忽略参数的。
...全文
45 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 danliandejintou 的回复:]
引用 1 楼 shine333 的回复:

损失一小部分运行性能,换取开发速度(当然,这个解析代码要写好),这年头,人工比硬件值钱多了

话说,如果以后需求变化,除了age,name,score,有多了个gender,phone,height,weight,address,email....................,你要改好一会儿,写好多个if或者配置。
另外,这些最常用的代码,……
[/Quote]

手工拼接: if (age......) {sqlBuffer.append(" and age = :age ")} ...

动态拼接的话,如果是这样的sql,还是解析来的简单(:xxx变成jdbc的?,然后设置preparedStatement),而动态拼接,你需要附加很多参数:
where age=:age and name LIKE :name and score > :score

danliandejintou 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shine333 的回复:]

损失一小部分运行性能,换取开发速度(当然,这个解析代码要写好),这年头,人工比硬件值钱多了

话说,如果以后需求变化,除了age,name,score,有多了个gender,phone,height,weight,address,email....................,你要改好一会儿,写好多个if或者配置。
另外,这些最常用的代码,合并到一处,降低了出错的概率。
[/Quote]

动态拼接sql也可以抽象出一个工具类来加快开发速度啊。。。
【话说】这段话列举的缺点,你是指动态拼接还是指解析?
shine333 2011-11-18
  • 打赏
  • 举报
回复
损失一小部分运行性能,换取开发速度(当然,这个解析代码要写好),这年头,人工比硬件值钱多了

话说,如果以后需求变化,除了age,name,score,有多了个gender,phone,height,weight,address,email....................,你要改好一会儿,写好多个if或者配置。
另外,这些最常用的代码,合并到一处,降低了出错的概率。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧