java多条件查询代码 java多条件拼接查询

java多条件查询问题

java多条件不定条件查询

创新互联建站专注于企业网络营销推广、网站重做改版、绍兴网站定制设计、自适应品牌网站建设、H5场景定制商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为绍兴等各大城市提供网站开发制作服务。

网站或各类管理系统都会用到搜索,会用到一个或多个不确定条件搜索,单条件搜索比较简单,有时候会有多个条件共同查询,如果系统中已经提供了相关的方法供你使用最好,像我做这老系统改版,需要添加搜索,就要自己写了。开始也没管那么多,就是拼sql,但是后来发现要加搜索地方不少,总是这样写既增加了工作量,还要做很多重复工作,说不定以后还会做这样的工作,所以还是写一个比较通用的查询方法。

package com.test;

import java.util.Iterator;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import javax.annotation.Resource;

import org.apache.poi.hssf.record.formula.functions.T;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.jdbc.core.BeanPropertyRowMapper;

import org.springframework.jdbc.core.JdbcTemplate;

import com.ams.bo.webapi.dto.Agent;

public class MultiTaskSearch {

@Resource(name="jdbcTemplate")

private JdbcTemplate jdbcTemplate;

@Resource(name = "storeFrontDAO")

private Map search() {

String name="公司";

String email="@163";

String invoiceTitle="公司";

int sign=1;

String at="2012-04-26";

MapString, Object map=new LinkedHashMapString, Object();//保持添加顺序

// MapString, Object map=new HashMapString, Object();//无固定顺序

map.put("name like", name);

map.put("email like", email);

map.put("invoiceTitle like", invoiceTitle);

map.put("sign =", sign);

map.put("addtime=", at);

return map;

}

public T ListT dbSearch(Class typeClass,MapString, Object map,String orderby) {

String paths[] = { "ams-servlet.xml" };

ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);

jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");

ListT TList=null;

String tablename = typeClass.getName().substring(

typeClass.getName().lastIndexOf(".") + 1);

StringBuffer sql=new StringBuffer("select * from ");

sql.append(tablename);

if (map.size()!=0) {

sql.append(" t where 1=1");//后面只需拼接and条件

}

SetEntryString, Object set=map.entrySet();

Iterator iterator=set.iterator();

for (int i = 0; i set.size(); i++) {

Map.Entry mapEntry=(Entry) iterator.next();

if (!"".equals(mapEntry.getValue().toString())) {

//模糊匹配

if (mapEntry.getKey().toString().contains("like")) {

// sql.append(" and t."+mapEntry.getKey()+" "+mapEntry.getValue()+" ");

sql.append(" and t."+mapEntry.getKey()+" '%"+mapEntry.getValue()+"%'");

//精确匹配

}else {

// sql.append(" and t."+mapEntry.getKey()+" '%"+mapEntry.getValue()+"%'");

sql.append(" and t."+mapEntry.getKey()+" "+mapEntry.getValue()+" ");

}

}

}

if (null!=orderby!"".equals(orderby)) {

sql.append(orderby);

}

System.out.println("SQL:"+sql.toString());

TList=jdbcTemplate.query(sql.toString(),new Object[] {}, new BeanPropertyRowMapperT (typeClass));

return TList;

}

public static void main(String[] args) {

MultiTaskSearch mt=new MultiTaskSearch();

Map map=mt.search();

String orderby=" order by addTime desc";

ListAgent agents=mt.dbSearch(Agent.class, map,orderby);

for (Agent agent : agents) {

System.out.println(agent.getName());

}

System.out.println("****************"+agents.size());

}

}

或者可以用拼sql的方法实现

使用union关键字可以在一个文本框内搜索出多个条件的数据

select t1.* from

(

select * from agent where name like '"2%'

union

select * from agent where email like '"2%'

union

select * from agent where ContactPerson like '"2%'

) t1

这种查询结果是所有的集合,也可以把union换成or

关于一些JAVA对数据库 多条件查询

可以这样:根据判断传入参数是否为空格或null来判断是否有这个查询条件,来拼凑出不同的sql语句,例如

StringBuffer sb = new StringBuffer();

sb.append("select * from a where 1=1");

if(!"".equals("a") || null != a){

sb.append(" and a = " + a);

}

就像这样来根据不同条件查询

java中如何处理多条件的sql查询语句

一般多个条件的时候,处理方式是 select * from table where 1 = 1先写上这样一个条件,这样你以后的条件就可以直接用 if判断了,比如现在有A ,B 两个条件 就可以直接这样

String sql = "select * from table where 1 = 1";

if( 条件A != null ){

sql += " and A =" + 条件A;

}

if( 条件B != null ){

sql += " and B =" + 条件B;

}

这样就可以避免多种情况存在的问题

Java中数据库实现多条件查询(条件是不确定的,可以是一个,两个,三个,四个,五个)!

你这样做输出SS语句调试看看,你会发现你输出的SQL语句有问题!

String ss="SELETE * FROM MESSAGE WHERE";

int i=1;char c='"';

if(na!=null)

{ss=ss+"AND 姓名='"+na+"'";i=0;

System.out.println(ss);

}

if(se!="")

{

if(i==0){ss=ss+"AND 性别='"+se+"'";i=0;}

else {ss=ss+"AND 性别='"+se+"'";i=1;}

}

if(xi!="")

{

if(i==0){ss=ss+"AND 系别='"+xi+"'";i=0;}

else {ss=ss+"AND 系别='"+xi+"'";i=1;}

}

if(zh!="")

{

if(i==0){ss=ss+"AND 专业='"+zh+"'";i=0;}

else {ss=ss+"AND 专业='"+zh+"'";i=1;}

}

if(ni!="")

{

if(i==0){ss=ss+"AND 年级='"+ni+"'";}

else {ss=ss+"AND 年级='"+ni+"'";}

}

ss=c+ss+c;

rs=sql.executeQuery(ss);

就拿第一个SQL语句来做示范,加入你的na值为abc,输出的SS是 SELETE * FROM MESSAGE WHEREAND 姓名= 'abc'

仔细一看就知道SQL语句上很严重的错误 WHERE 后面接了AND关键词

可以这样改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND";

最后使用replaceAll('AND$', ")") 替换最后一个AND字符穿。或者使用字符创截取 去掉最后三个字符(AND)


文章题目:java多条件查询代码 java多条件拼接查询
链接地址:http://ybzwz.com/article/doeiejs.html