一个DAO方法中如何完成不确定个数的条件查询

 

    

写了那么多程序, 是一个按钮, 一个查询条件 或者查询的目的表格 , 都会写一个独立的方法。 从来就没有想过要让一个 不确定个数的查询条件的 sql 语句 写在同一个方法中。

 

        今天算是实现了 一个全写完了 贴上来 。

 

          先不管那么多了 ,先看一个sql 语句,   select fwid , title , zj , date , uid  from tbl_fwxx , tbl_jd "where "
      "tbl_fwxx.jdid=tbl_jd.jdid       

   

     我恐怕要先问自己了 ,这是什么玩意, 首先注意这里的2个表 , tbl_fwxx (房屋信息表) 和 tbl_jd (接到信息表) 他们2个表之间有有主外键的关系  就是 tbl_fwxx.jdid=tbl_jd.jdid      , 这里又要问了 , 这有什么用啊? 加了这个条件和没加是一样的  . 都是查询的全部信息 .  一开始我也那么想的, 但是做到后面 才发现, 程序中之所以这样写一个sql语句  是有着两重考虑的 .

 

     其一就是 ,做好这样一个铺垫, 为后面的

     if(house.getTitle() != null){
   sql += " and tbl_fwxx.title like '%"+house.getTitle()+"%'";
  }
  if(house.getCity().getQxid() != 0){
   sql += " and tbl_jd.qxid = '"+house.getCity().getQxid()+"' ";
  }

      做准备 , 因为在没有任何查询条件的情况下 ,  这样的写法是Ok的,   select fwid , title , zj , date , uid  from tbl_fwxx , tbl_jd   , 但是万一 有了一个模糊查询 或者 多个查询条件, 我们该怎么样灵活地处理 sql 语句 呢?

      难道像这样  if(house.getTitle() != null){
   sql += "  where  tbl_fwxx.title like '%"+house.getTitle()+"%'";
  }

每个if 判断中的 开头都先写个 where , 去掉 and ???  那好,,

这也只是在出现有某一时刻只有一个查询条件的情况下, 那要是两个查询条件呢? 或者是三个四个呢?

  每个if 语句中 都这样写 ?  sql += "  where  tbl_fwxx.title like '%"+house.getTitle()+"%'";  

  

   每个前面都写成 where    ,来吧 来组合一下看看吧  , 就以同时有三个查询条件为例 , 看看sql 语句是什么样子的.

  

    select fwid , title , zj , date , uid  from tbl_fwxx , tbl_jd "where "


      "tbl_fwxx.jdid=tbl_jd.jdid    where   tbl_fwxx.title like '%"+house.getTitle()+"%'   where tbl_jd.qxid =

 

'"+house.getCity().getQxid()+"'      

  

       试问 , 有哪一款数据库能够编译这样的sql 语句?   我服他 , 所有这里就显示出  书中 写成

where tbl_fwxx.jdid=tbl_jd.jdid  

   的高明之处了 .

 

     那这是其一, 其二就是 : 在数据库表中, 与btl_fwxx(房屋信息表) 有主外键的关系有另外三个表, 但是为什么选择了 三个中的 tbl_jd  呢?  是偶然么?  不是 , 选择 tbl_jd  有一点优势 是另外两个表所无法比拟的 .  那么就是tbl_jd  表中的一个列 qxid  是另外一个 表 tbl_qx (区县表) 的外键,(tbl_qx 与 tbl_fwxx没有主外键关系)  

      ,但是在程序中是需要tbl_qx数据的 , 那就通过tbl_jd 来查询出 jdid 就Ok 了 ,省了很多事情,

 

     当然 加入这么写也是可以的 , select fwid , title , zj , date , uid  from tbl_fwxx , tbl_jd , tbl_qx  where tbl_fwxx.jdid=tbl_jd.jdid and tbl_qx.qxid = 2

瞧 , 这里在from 后面 where 前面写了 表明 tbl_qx 也是可以的,  我试验正常查出了数据. 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值