diff --git a/src/main/java/com/taover/util/UtilHttpRequestMap.java b/src/main/java/com/taover/util/UtilHttpRequestMap.java new file mode 100644 index 0000000..1bb540f --- /dev/null +++ b/src/main/java/com/taover/util/UtilHttpRequestMap.java @@ -0,0 +1,157 @@ +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; + +import com.taover.util.UtilLog; +import com.taover.util.UtilString; + +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) { + UtilLog.errorForException(e, UtilHttpRequestMap.class); + } + } + 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); + 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){ + 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) { + UtilLog.errorForException(e, UtilHttpRequestMap.class); + } + } + return result; + } +} -- libgit2 0.21.2