package com.taover.util; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class UtilHttpRequestMap { /** * 将requestMap上的String[]转换为String * @param requestMap * @return */ public static Map getMapValueStringByRequestMap(Map requestMap){ Map result = new HashMap(); Iterator keyIter = requestMap.keySet().iterator(); while(keyIter.hasNext()){ String keyName = keyIter.next(); result.put(keyName, requestMap.get(keyName)[0]); } return result; } /** * * @param requestMap * @param entityClass * @param exceptColumnList * @return */ public static List getSqlConditionListByRequestMap(Map requestMap, Class entityClass, String exceptColumnList){ Iterator keyIter = requestMap.keySet().iterator(); List result = new ArrayList(); while (keyIter.hasNext()) { String keyName = keyIter.next(); if(exceptColumnList != null && exceptColumnList.contains(keyName)){ continue; } String camelName = UtilString.camelName(keyName); try { Field camelField = entityClass.getDeclaredField(camelName); camelField.setAccessible(true); result.add(getSqlConditionArrayByStringArray(camelField, keyName, requestMap.get(keyName))); } catch (Exception e) {} } return result; } /** * 通过Map数据构造bean * @param dataMap * @param beanClass * @param isCopyNull * @param exceptColumnList * @return * @throws Exception */ public static T getBeanByMap(Map dataMap, Class beanClass, boolean isCopyNull, String exceptColumnList) throws Exception{ if(beanClass == null){ return null; } T result = beanClass.newInstance(); Iterator keyIter = dataMap.keySet().iterator(); while(keyIter.hasNext()){ String keyName = keyIter.next(); String camelName = UtilString.camelName(keyName); Object keyValue = dataMap.get(keyName); if(isCopyNull && keyValue == null){ continue; } Field keyField = beanClass.getDeclaredField(camelName); keyField.setAccessible(true); String keyFieldTypeName = keyField.getType().getSimpleName(); if(keyValue == null){ keyField.set(result, null); }else{ String keyValueClassName = keyValue.getClass().getSimpleName(); if(keyValueClassName.equals(keyFieldTypeName)){ keyField.set(result, keyValue); }else{ if(keyFieldTypeName.equals("String")){ keyField.set(result, keyValue.toString()); }else if(keyFieldTypeName.equals("Integer")){ keyField.set(result, Integer.valueOf(keyValue.toString())); } } } } return result; } /** * 通过requestMap的String[]构造Sql Condition条件 * @param camelField * @param keyName * @param data * @return * @throws Exception */ private static Object[] getSqlConditionArrayByStringArray(Field camelField, String keyName, String[] data) throws Exception{ if(data == null || data.length == 0){ throw new Exception("data is null"); } String colName = UtilString.underscoreName(keyName).toLowerCase(); if(data.length == 1){ if(data[0] == null || "".equals(data[0].trim())){ throw new Exception("data[0] is empty"); } String typeName = camelField.getType().getSimpleName(); if(typeName.equals("String")){ return new Object[]{colName, "like", "%"+data[0]+"%"}; }else if(typeName.equals("Date")){ return new Object[]{"datediff(`"+colName+"`, '"+data+"')=0"}; }else{ return new Object[]{colName, "=", data[0]}; } } String sql = colName+" in ('"+data[0]+"'"; for(int i=1; i getUpdateListByRequestMap(Map requestMap, Class entityClass, String exceptColumnList){ Iterator keyIter = requestMap.keySet().iterator(); List result = new ArrayList(); while (keyIter.hasNext()) { String keyName = keyIter.next(); if(exceptColumnList != null && exceptColumnList.contains(keyName)){ continue; } String camelName = UtilString.camelName(keyName); try { Field camelField = entityClass.getDeclaredField(camelName); camelField.setAccessible(true); result.add(new Object[]{UtilString.underscoreName(keyName).toLowerCase(), requestMap.get(keyName)[0]}); } catch (Exception e) {} } return result; } }