package com.fw.utils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.log4j.Logger;import com.fw.common.sql.SqlHandler;import com.ve.vo.UserVO;/** * 字段解析、组装容器 * @description * @author zhanglm * @date 2014-4-28 */public class ParseUtils<T extends Object> {private static Logger log = Logger.getLogger(ParseUtils.class);/** * 解析sql中的参数,通过反射机制根据参数名注入对应的vo中的值放入list中 * @param sqlId * @param obj * @return */public static List<Object> parseVoToList(String sql,Object obj){List<Object> paramList = new ArrayList<Object>();List<String> tempList = new ArrayList<String>();// 匹配参数 "(空格多个)(任意字符)(空格多个)(= ?)"String regex = "(\s*)(\w*)(\s*)(=\s*\?)";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(sql);while(m.find()){ tempList.add(m.group(2)); } // 通过反射机制找到对应的参数内容放到 参数中if(tempList.size()>0){Class<?> c = obj.getClass();java.lang.reflect.Field[] field = c.getDeclaredFields();for (int i = 0; i < field.length; i++) {field[i].setAccessible(true);try {if(field[i].get(obj)!=null){//System.out.println(field[i].getName());//System.out.println(field[i].get(obj));for(String paramname:tempList){if(paramname.equalsIgnoreCase(field[i].getName().trim())){paramList.add(field[i].get(obj));}}}} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return paramList;}/** * 解析sql中的参数,通过反射机制根据sql中的参数名注入对应的map中 * @param sqlId * @param vo * @return */public static Map<String,Object> parseVoToMap(String sql,Object obj){List<Object> paramList = new ArrayList<Object>();// 找出参数名String regex = "(\s*)(\w*)(\s*)(=\s*\?)";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(sql);Map<String,Object> map = new HashMap<String, Object>();while(m.find()){ paramList.add(m.group(2));map.put(m.group(2).trim().toLowerCase(), ""); } // 通过反射机制找到对应的参数内容放到 参数中if(!map.isEmpty()){Class<?> c = obj.getClass();java.lang.reflect.Field[] field = c.getDeclaredFields();for (int i = 0; i < field.length; i++) {field[i].setAccessible(true);try {if(field[i].get(obj)!=null){//System.out.println(field[i].getName());//System.out.println(field[i].get(obj));if(map.containsKey(field[i].getName().trim().toLowerCase())){map.put(field[i].getName().trim().toLowerCase(), field[i].get(obj));}}} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return map;}public static void main(String[] args)throws Exception {ParseUtils<UserVO> p = new ParseUtils<UserVO>();//...}}package com.fw.utils;import java.lang.reflec