用JAVABEAN如何实现多个条件查询!急! 比如一个信息发布管理系统,如果想根据信息标题,发布时间,发布人其中的任意一个条件进行查询,但是只在一个JAVABEAN里面实现,怎么实现阿!请高手帮忙阿! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 拼sql语句eg:select * from news where ? = ?第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。 在JAVABEAN中查询是什么意思,还是在数据库中查询呢? 用if语句判断三个条件哪个为空,如果为空则生成的sql语句没有该条件;总得来说就是用if语句判断,拼凑sql语句 暂时2中方法实现..1. 1楼方法 select * from table where cols = ? cols做变量..根据你点击的不同决定cols不同.2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..其实用hibernate的不用这么麻烦了. 两个方法:一:在bean的一个方法里拼SQL二:针对这三个字段写3个方法 没错动态生成SQLpublic String getSQL(NoteBean note){ NoteBean note = note; //里面存放的是从页面获取查询的条件 String sql="select * from notetable"; if(3个查询条件有一个不为空) sql = sql + " WHERE "; if(note.getDATE()!=null&¬e.getDATE().lenght>1) //当查询DATE 存在时 sql = sql+" DATE ="+note.getDATE(); if(note.getAUTHOR()!=null&¬e.getAUTHOR().lenght>1) //当查询AUTHOR 存在时 sql = sql+" AUTHOR ="+note.getAUTHOR(); if(note.getID()!=null&¬e.getID().lenght>1) //当查询ID 存在时 sql = sql+" ID ="+note.getID();}一种思路!~ sql=select * from table where Primary key!=null;if(username!=nul){sql+=" and username="+username;}....... 为什么要length大于1啊?不太明白,呵呵 可否解说一下啊! 写拼装SQL根据条件的不同进行拼装 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??+"";} 有可能 NoteBean 初始化的时候 会给他赋 String ID = ""; 这种情况!~ length > 014楼的 bean.getName.equals("") 一个效果! 恩 针对不同的条件 拼sql语句 拼接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.re='"+dis+"'"; }else{ strWhere += "and m.re='"+dis+"'"; } } hql=hql+strWhere;这样最终的sql语句就出来了,你试试^_^ 浏览器访问tomcat出了大问题。。(急急急) 新手,,,高手进来下 javabean找不到setXXX()方法 我要做个动态组织结构图,该怎么做,在线等,急 在Action如何用SMARTUPLOAD? 还是没搞懂!不知道怎么限制字数。 请教用dwr抓页面的方式传数据是怎么回事,在哪有相关方面的学习文档和例子? java用RXTX.JAR操作串口的问题。 如何得到表中记录的总数? jsp中怎样做到透明度? 我刚学JSP啊,大家来帮我看看这个问题 怎样为<input type=file>的value属性动态赋值或设置默认值
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句
1. 1楼方法 select * from table where cols = ?
cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.
一:在bean的一个方法里拼SQL
二:针对这三个字段写3个方法
public String getSQL(NoteBean note){ NoteBean note = note; //里面存放的是从页面获取查询的条件 String sql="select * from notetable"; if(3个查询条件有一个不为空) sql = sql + " WHERE "; if(note.getDATE()!=null&¬e.getDATE().lenght>1) //当查询DATE 存在时
sql = sql+" DATE ="+note.getDATE(); if(note.getAUTHOR()!=null&¬e.getAUTHOR().lenght>1) //当查询AUTHOR 存在时
sql = sql+" AUTHOR ="+note.getAUTHOR(); if(note.getID()!=null&¬e.getID().lenght>1) //当查询ID 存在时
sql = sql+" ID ="+note.getID();
}
一种思路!~
if(username!=nul){
sql+=" and username="+username;
}
.......
if(bean.getName.equals("") && bean.getName!=null)
{
sql+="and name="+bean.getName+"";
}
if(bean.get??.equals("") && bean.get??!=null)
{
sql+="and ??="+bean.get??+"";
}
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.re='"+dis+"'";
}else{
strWhere += "and m.re='"+dis+"'";
}
}
hql=hql+strWhere;
这样最终的sql语句就出来了,你试试^_^