21 个解决方案
#1
拼sql语句
eg:select * from news where ? = ?
第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。
eg:select * from news where ? = ?
第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。
#2
在JAVABEAN中查询是什么意思,还是在数据库中查询呢?
#3
就是动态生成SQL语句嘛!
#4
用if语句判断三个条件哪个为空,如果为空
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句
#5
一楼说的对, 这种情况就要靠传多参来解决. 应该不算很难,
只是要烦点.
只是要烦点.
#6
暂时2中方法实现..
1. 1楼方法 select * from table where cols = ?
cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.
1. 1楼方法 select * from table where cols = ?
cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.
#7
我说的第二个意思是...把所有可能要用到的查询都写出方法..
#8
两个方法:
一:在bean的一个方法里拼SQL
二:针对这三个字段写3个方法
一:在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&¬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();
}
一种思路!~
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();
}
一种思路!~
#10
没写RETURN sql;
#11
sql=select * from table where Primary key!=null;
if(username!=nul){
sql+=" and username="+username;
}
.......
if(username!=nul){
sql+=" and username="+username;
}
.......
#12
为什么要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??+"";
}
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("") 一个效果!
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语句就出来了,你试试^_^
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 ? = ?
第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。
eg:select * from news where ? = ?
第一个问号代表你按什么查,第二个代表你要查询的关键字是什么。
#2
在JAVABEAN中查询是什么意思,还是在数据库中查询呢?
#3
就是动态生成SQL语句嘛!
#4
用if语句判断三个条件哪个为空,如果为空
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句
则生成的sql语句没有该条件;
总得来说就是用if语句判断,拼凑sql语句
#5
一楼说的对, 这种情况就要靠传多参来解决. 应该不算很难,
只是要烦点.
只是要烦点.
#6
暂时2中方法实现..
1. 1楼方法 select * from table where cols = ?
cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.
1. 1楼方法 select * from table where cols = ?
cols做变量..根据你点击的不同决定cols不同.
2. 笨点,把所有你可能要用到的列查询都作为写出来,直接根据传来参数的不同执行不同的查询语句..
其实用hibernate的不用这么麻烦了.
#7
我说的第二个意思是...把所有可能要用到的查询都写出方法..
#8
两个方法:
一:在bean的一个方法里拼SQL
二:针对这三个字段写3个方法
一:在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&¬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();
}
一种思路!~
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();
}
一种思路!~
#10
没写RETURN sql;
#11
sql=select * from table where Primary key!=null;
if(username!=nul){
sql+=" and username="+username;
}
.......
if(username!=nul){
sql+=" and username="+username;
}
.......
#12
为什么要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??+"";
}
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("") 一个效果!
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语句就出来了,你试试^_^
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
不知道怎么跟你说:“”,中间要做很多事情。不过你这样问也太笼统了些。。。。。