首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

依据用户输入查询条件的个数动态拼SQL

2012-12-25 
根据用户输入查询条件的个数动态拼SQL今天终于想出了个电子把这个问题解决了。记录一下:package com.sysnet

根据用户输入查询条件的个数动态拼SQL
今天终于想出了个电子把这个问题解决了。记录一下:

package com.sysnet.test;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class Test {public static void main(String[] args){TestVO vo=new TestVO();vo.setAge(2);vo.setName("shenzhw");vo.setDesc("sdag");try{new Test().t(vo);}catch(Exception e){e.printStackTrace();}}//要对VO中的数据类型加以判断public void t(TestVO vo) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException{Field[] fields=vo.getClass().getDeclaredFields();Map<String,Object> valueMap=new HashMap<String,Object>();for(int i=0;i<fields.length;i++){Field f=fields[i];String name=f.getName();String method="get" + name.substring(0, 1).toUpperCase() + name.substring(1);Method getMethod=vo.getClass().getMethod(method, new Class[]{});Object value=getMethod.invoke(vo, new Object[]{});if(value!=null){valueMap.put(name, value);}}StringBuffer sql=new StringBuffer("select * from t");if(valueMap.size()>0){sql.append(" where ");}Iterator<String> iter=valueMap.keySet().iterator();String key=iter.next();sql.append(key + "=" + valueMap.get(key));while(iter.hasNext()){String k=iter.next();sql.append(" and " + k + "=" + valueMap.get(k));}System.out.println(sql.toString());}}

热点排行