12
返回列表 发新帖
楼主: zhongxuchen

[原创] 数据库动态查询最佳实现 陈氏查询

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2009-5-5 00:27 | 只看该作者

回复 #9 piliskys 的帖子

哈哈,不是打击不打击的事情,我认为你根本就没有看明白我说的是什么,我强调的是sql的写法,动态参数,我提供的是对sql语句的动态处理
查询条件不定,最终执行的sql是不一样的,你说的跟我说的不是一码事,我强调的是动态以及sql和代码的分离,你确信明白了再提打击!不要没有看明白什么意思,上来就搞什么打击,这样是不对的!
请看这句:老兄你说的支持数组,请看文章调用方法那块,其实调用时及其简单的就是一句话!你说的对返回数据的封装,我告诉你我提供了3种方式:
在调用时提供了多态方式参数有voClass、rowCallBackHandler(反调自己实现接口,spring jdbcTemplate中有类似实现,请参看),如果这两个参数都为null就返回数组集合,我想这应该完全满足要求了吧?要快速对象封装就用voClass,比较复杂的封装就自己实现RowCallBackHandler接口,如果不需要封装就什么也不传,直接返回ResultSet放到List中的结果,哈哈这里不多阐述了,我非常希望大家能够认真阅读后再提出自己的见解,不要仅看一眼就随意评价,好坏自有分说,我乐意听到不同的声音,但没有看明白意思就评说我认为缺乏严谨的做事态度,对我的文章也不够尊重!
select t.*
          ,t1.NAME
from OA_CAR_REGIST t,HR_STAFF_INFO t1
where 1=1
         and t1.STAFF_NO=t.CHAUFFEUR
         and t.IS_ACTIVE=?
         #[and t.CAR_MODE like ? ] <!--?对应的值为null 这一块就没有了,这不是spring里面所提供的吧--->
         #[and t1.NAME like ? ]
         #[and t.REGIST_DATE>=? and t.REGIST_DATE<= ? ]
         #[and t.DISABLE_DATE>=? and t.DISABLE_DATE<= ? ]
         #[and t.ASSET_TYPE= ? ]
这样的sql判断参数值,#[]中的内容有可能会被切除,也许最终的sql是:
select t.*
          ,t1.NAME
from OA_CAR_REGIST t,HR_STAFF_INFO t1
where 1=1
         and t1.STAFF_NO=t.CHAUFFEUR
         and t.IS_ACTIVE=?

select t.*
          ,t1.NAME
from OA_CAR_REGIST t,HR_STAFF_INFO t1
where 1=1
         and t1.STAFF_NO=t.CHAUFFEUR
         and t.IS_ACTIVE=?
         and t.ASSET_TYPE= ?


要是老兄果然是没有看明白,那我真为自己叫屈,我真是服了,太多人都是对待事情是不踏实严谨,你还算不错了,javaeye上的有一个上来就声称写sql就是过时(当然我的这个也是支持hql等等的,这小子根本就没有明白我所阐述的一个机理),还有就是把别人想的特土,hibernate的条件查询还有this.getHibernateTemplate.get(Id)之类的别人也不知道一样,我当时还特别在文章头上说了,简单的做法不多强调,因为简单的大家做法都差不多,写在代码中也无所谓!更有甚者以用了hibernate annotation就标榜自己先进!我真服了!

[ 本帖最后由 zhongxuchen 于 2009-5-5 00:59 编辑 ]

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2009-5-5 00:28 | 只看该作者

回复 #9 piliskys 的帖子

哈哈,不是打击不打击的事情,我认为你根本就没有看明白我说的是什么,我强调的是sql的写法,动态参数,我提供的是对sql语句的动态处理,
查询条件不定,最终执行的sql是不一样的,你说的跟我说的不是一码事,我强调的是动态以及sql和代码的分离,你确信明白了再提打击!不要没有看明白什么意思,上来就搞什么打击,这样是不对的!
select t.*
          ,t1.NAME
from OA_CAR_REGIST t,HR_STAFF_INFO t1
where 1=1
         and t1.STAFF_NO=t.CHAUFFEUR
         and t.IS_ACTIVE=?
         #[and t.CAR_MODE like ? ] <!--?对应的值为null 这一块就没有了,这不是spring里面所提供的吧--->
         #[and t1.NAME like ? ]
         #[and t.REGIST_DATE>=? and t.REGIST_DATE<= ? ]
         #[and t.DISABLE_DATE>=? and t.DISABLE_DATE<= ? ]
         #[and t.ASSET_TYPE= ? ]
这样的sql判断参数值,#[]中的内容有可能会被切除,

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表