首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用JAVABEAN如何实现多个条件查询!急! [已结贴,结贴人:changml0929]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • changml0929
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-26 12:17:01 楼主
    比如一个信息发布管理系统,如果想根据信息标题,发布时间,发布人其中的任意一个条件进行查询,但是只在一个JAVABEAN里面实现,怎么实现阿!请高手帮忙阿!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • a1405
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 12:49:391楼 得分:0
    拼sql语句

    eg:select * from news where  ? = ?

    第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dalmatians
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 13:08:572楼 得分:0
    在JAVABEAN中查询是什么意思,还是在数据库中查询呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hornbilltofy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 14:16:143楼 得分:0
    就是动态生成SQL语句嘛!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • burningice44
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 14:23:464楼 得分:0
    用if语句判断三个条件哪个为空,如果为空
    则生成的sql语句没有该条件;
    总得来说就是用if语句判断,拼凑sql语句
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • youhere1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 14:26:015楼 得分:0
    一楼说的对, 这种情况就要靠传多参来解决. 应该不算很难,
    只是要烦点.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fys249931556
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 16:16:556楼 得分:0
    暂时2中方法实现..
    1. 1楼方法  select * from table where cols = ?
      cols做变量..根据你点击的不同决定cols不同.
    2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
    其实用hibernate的不用这么麻烦了.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fys249931556
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 16:17:537楼 得分:0
    我说的第二个意思是...把所有可能要用到的查询都写出方法..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiaping108
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 16:47:118楼 得分:0
    两个方法:
    一:在bean的一个方法里拼SQL
    二:针对这三个字段写3个方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoyanxue
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:57:129楼 得分:7
    没错动态生成SQL


    public String getSQL(NoteBean  note){

        NoteBean  note = note; //里面存放的是从页面获取查询的条件

        String  sql="select * from notetable";

        if(3个查询条件有一个不为空) sql = sql + " WHERE ";

        if(note.getDATE()!=null&&note.getDATE().lenght>1) //当查询DATE 存在时
            sql = sql+" DATE ="+note.getDATE();

        if(note.getAUTHOR()!=null&&note.getAUTHOR().lenght>1) //当查询AUTHOR 存在时
              sql = sql+" AUTHOR ="+note.getAUTHOR();

        if(note.getID()!=null&&note.getID().lenght>1) //当查询ID 存在时
              sql = sql+" ID ="+note.getID();
    }


    一种思路!~

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoyanxue
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:59:3310楼 得分:0
    没写RETURN sql;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzk2rxj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 19:45:4111楼 得分:0
    sql=select * from table where Primary key!=null;
    if(username!=nul){
    sql+=" and username="+username;
    }
    .......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • changml0929
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 21:15:0512楼 得分:0
    引用 9 楼 luoyanxue 的回复:
    没错动态生成SQL


    public String getSQL(NoteBean  note){

        NoteBean  note = note; //里面存放的是从页面获取查询的条件

        String  sql="select * from notetable";

        if(3个查询条件有一个不为空) sql = sql + " WHERE ";

        if(note.getDATE()!=null&&note.getDATE().lenght>1) //当查询DATE 存在时
            sql = sql+" DATE ="+note.getDATE();

        if(note.getAUTHOR()!=null&&note.g…

    为什么要length大于1啊?不太明白,呵呵 可否解说一下啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zk32373139
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 21:34:5713楼 得分:0
    写拼装SQL

    根据条件的不同进行拼装
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Slayer_Boxer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 23:21:0214楼 得分:5
    String sql=select * from table where 1=1;
    if(bean.getName.equals("") && bean.getName!=null)
    {
        sql+="and name="+bean.getName+"";
    }
    if(bean.get??.equals("") && bean.get??!=null)
    {
        sql+="and ??="+bean.get??+"";
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jaytse
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 09:20:2715楼 得分:0
    9楼的方案俺们的持久层中到处都是
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoyanxue
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 09:43:4316楼 得分:0
    有可能 NoteBean 初始化的时候 会给他赋 String ID = ""; 这种情况!~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoyanxue
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 10:03:3617楼 得分:0
    length > 0

    14楼的 bean.getName.equals("") 一个效果!

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oogamiyiqilou
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 10:16:0318楼 得分:0
    恩 针对不同的条件 拼sql语句
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • changml0929
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-28 11:23:1119楼 得分:0
    谢谢各位的帮忙!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyandlh
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-28 12:05:0820楼 得分:8
    拼接sql语句。如:(下面条件均为一个javabean中的属性)
                    String id = request.getParameter("maid");//条件1
    String kind = request.getParameter("makind");//条件2
    String dis = request.getParameter("madis");//条件3
    String hql = "select * from Materiel m where ";//sql语句
    String strWhere = "";//拼接段
    List rlist = new ArrayList();
    if("".equals(id)&&"".equals(kind)&&"".equals(dis)){//如果条件都没填则
    hql="select * from Materiel ";
    }else{
    if ((id!=null)&&(!id.equals(""))){//开始组装sql语句
                if(strWhere.equals("")){//strWhere为空则直接加条件
                  strWhere = "m.name='"+id+"'";
                }else{//否则加"and"后再加条件
                  strWhere += "and m.name='"+id+"'";
                }
            }
    if ((kind!=null)&&(!kind.equals(""))){//同上
                if(strWhere.equals("")){
                  strWhere = "m.kind='"+kind+"'";
                }else{
                  strWhere += "and m.kind='"+kind+"'";
                }
            }
    if ((dis!=null)&&(!dis.equals(""))){//同上
                if(strWhere.equals("")){
                  strWhere = "m.remark='"+dis+"'";
                }else{
                  strWhere += "and m.remark='"+dis+"'";
                }
            }
    hql=hql+strWhere;
    这样最终的sql语句就出来了,你试试^_^
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeng_wu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-28 13:41:4721楼 得分:0
    不知道怎么跟你说:“”,中间要做很多事情。不过你这样问也太笼统了些。。。。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved