真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

java多條件查詢代碼 java多條件拼接查詢

java多條件查詢問題

java多條件不定條件查詢

創(chuàng)新互聯建站專注于企業(yè)網絡營銷推廣、網站重做改版、紹興網站定制設計、自適應品牌網站建設、H5場景定制、商城網站建設、集團公司官網建設、成都外貿網站建設公司、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為紹興等各大城市提供網站開發(fā)制作服務。

網站或各類管理系統都會用到搜索,會用到一個或多個不確定條件搜索,單條件搜索比較簡單,有時候會有多個條件共同查詢,如果系統中已經提供了相關的方法供你使用最好,像我做這老系統改版,需要添加搜索,就要自己寫了。開始也沒管那么多,就是拼sql,但是后來發(fā)現要加搜索地方不少,總是這樣寫既增加了工作量,還要做很多重復工作,說不定以后還會做這樣的工作,所以還是寫一個比較通用的查詢方法。

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語句調試看看,你會發(fā)現你輸出的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 專業(yè)='"+zh+"'";i=0;}

else {ss=ss+"AND 專業(yè)='"+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字符穿?;蛘呤褂米址麆?chuàng)截取 去掉最后三個字符(AND)


網站標題:java多條件查詢代碼 java多條件拼接查詢
瀏覽路徑:http://weahome.cn/article/doeiejs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部