UtilHttpRequestMap.java
4.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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<String, Object> getMapValueStringByRequestMap(Map<String, String[]> requestMap){
Map<String, Object> result = new HashMap<String, Object>();
Iterator<String> 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<Object[]> getSqlConditionListByRequestMap(Map<String, String[]> requestMap, Class entityClass, String exceptColumnList){
Iterator<String> keyIter = requestMap.keySet().iterator();
List<Object[]> result = new ArrayList<Object[]>();
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.infoForException(e, UtilHttpRequestMap.class);
}
}
return result;
}
/**
* 通过Map数据构造bean
* @param dataMap
* @param beanClass
* @param isCopyNull
* @param exceptColumnList
* @return
* @throws Exception
*/
public static <T> T getBeanByMap(Map<String, Object> dataMap, Class<T> beanClass, boolean isCopyNull, String exceptColumnList) throws Exception{
if(beanClass == null){
return null;
}
T result = beanClass.newInstance();
Iterator<String> 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<data.length; ++i){
sql += ", '"+data[i]+"'";
}
sql += ") ";
return new Object[]{sql};
}
/**
* 通过RequestMap获取更新数据的结构数组
* @param requestMap
* @param entityClass
* @param exceptColumnList
* @return
*/
public static List<Object[]> getUpdateListByRequestMap(Map<String, String[]> requestMap, Class entityClass, String exceptColumnList){
Iterator<String> keyIter = requestMap.keySet().iterator();
List<Object[]> result = new ArrayList<Object[]>();
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.infoForException(e, UtilHttpRequestMap.class);
}
}
return result;
}
}