用JAVABEAN如何实现多个条件查询!急!

时间:2021-10-03 22:25:29
比如一个信息发布管理系统,如果想根据信息标题,发布时间,发布人其中的任意一个条件进行查询,但是只在一个JAVABEAN里面实现,怎么实现阿!请高手帮忙阿!

21 个解决方案

#1


拼sql语句

eg:select * from news where  ? = ?

第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。

#2


在JAVABEAN中查询是什么意思,还是在数据库中查询呢?

#3


就是动态生成SQL语句嘛!

#4


用if语句判断三个条件哪个为空,如果为空
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句

#5


一楼说的对, 这种情况就要靠传多参来解决. 应该不算很难,
只是要烦点.

#6


暂时2中方法实现..
1. 1楼方法  select * from table where cols = ? 
   cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.

#7


我说的第二个意思是...把所有可能要用到的查询都写出方法..

#8


两个方法:
一:在bean的一个方法里拼SQL
二:针对这三个字段写3个方法

#9


没错动态生成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();
}


一种思路!~

#10


没写RETURN sql;

#11


sql=select * from table where Primary key!=null;
if(username!=nul){
sql+=" and username="+username;
}
.......

#12


引用 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啊?不太明白,呵呵 可否解说一下啊!

#13


写拼装SQL

根据条件的不同进行拼装

#14


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??+"";
}

#15


9楼的方案俺们的持久层中到处都是

#16


有可能 NoteBean 初始化的时候 会给他赋 String ID = ""; 这种情况!~

#17


length > 0

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

#18


恩 针对不同的条件 拼sql语句

#19


谢谢各位的帮忙!

#20


拼接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语句就出来了,你试试^_^

#21


不知道怎么跟你说:“”,中间要做很多事情。不过你这样问也太笼统了些。。。。。

#1


拼sql语句

eg:select * from news where  ? = ?

第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。

#2


在JAVABEAN中查询是什么意思,还是在数据库中查询呢?

#3


就是动态生成SQL语句嘛!

#4


用if语句判断三个条件哪个为空,如果为空
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句

#5


一楼说的对, 这种情况就要靠传多参来解决. 应该不算很难,
只是要烦点.

#6


暂时2中方法实现..
1. 1楼方法  select * from table where cols = ? 
   cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.

#7


我说的第二个意思是...把所有可能要用到的查询都写出方法..

#8


两个方法:
一:在bean的一个方法里拼SQL
二:针对这三个字段写3个方法

#9


没错动态生成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();
}


一种思路!~

#10


没写RETURN sql;

#11


sql=select * from table where Primary key!=null;
if(username!=nul){
sql+=" and username="+username;
}
.......

#12


引用 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啊?不太明白,呵呵 可否解说一下啊!

#13


写拼装SQL

根据条件的不同进行拼装

#14


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??+"";
}

#15


9楼的方案俺们的持久层中到处都是

#16


有可能 NoteBean 初始化的时候 会给他赋 String ID = ""; 这种情况!~

#17


length > 0

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

#18


恩 针对不同的条件 拼sql语句

#19


谢谢各位的帮忙!

#20


拼接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语句就出来了,你试试^_^

#21


不知道怎么跟你说:“”,中间要做很多事情。不过你这样问也太笼统了些。。。。。