Skip to content

Commit 2f885e6

Browse files
author
张立志
committed
修改时间误差函数
1 parent f565cf4 commit 2f885e6

File tree

22 files changed

+8479
-44480
lines changed

22 files changed

+8479
-44480
lines changed

Diff for: sparrow-mvc/src/main/java/com/sparrow/mvc/resolver/impl/RequestParameterArgumentResolver.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public Object resolveArgument(MethodParameter methodParameter, ServletInvokableH
6161

6262
List<TypeConverter> methods = container.getFieldList(methodParameter.getParameterType());
6363
for (TypeConverter field : methods) {
64-
String parameterName4Request = StringUtility.setFirstByteLowerCase(field.getName());
64+
String parameterName4Request = StringUtility.setFirstByteLowerCase(field.getPropertyName());
6565
parameter = request.getParameter(parameterName4Request);
6666

6767
if (parameter == null) {
@@ -75,7 +75,7 @@ public Object resolveArgument(MethodParameter methodParameter, ServletInvokableH
7575
if (executionChain.isValidateRequest() && field.getType().equals(String.class)) {
7676
parameter = HtmlUtility.encode(parameter);
7777
}
78-
methodAccessor.set(entity, field.getName(), field.convert(parameter));
78+
methodAccessor.set(entity, field.getPropertyName(), field.convert(parameter));
7979
}
8080
return entity;
8181
}

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/AbstractEntityManagerAdapter.java

+42-44
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public abstract class AbstractEntityManagerAdapter implements EntityManager {
4646
/**
4747
* 属性名和field
4848
*/
49-
protected Map<String, Field> fieldMap;
49+
protected Map<String, Field> propertyFieldMap;
5050
/**
5151
* 列名与属性名映射
5252
*/
@@ -58,7 +58,7 @@ public abstract class AbstractEntityManagerAdapter implements EntityManager {
5858
protected String className;
5959
protected Class<?> clazz;
6060
protected String simpleClassName;
61-
protected DialectReader dialectReader;
61+
protected DialectAdapter dialectAdapter;
6262
protected int tableBucketCount;
6363
protected DatabaseSplitStrategy databaseSplitStrategy;
6464
protected String insert;
@@ -73,17 +73,17 @@ private List<Field> extractFields(Class<?> clazz) {
7373
java.lang.reflect.Field[] fields = ClassUtility.getOrderedFields(fieldList);
7474
Map<String, Field> fieldMap = new LinkedHashMap<>();
7575

76-
for (java.lang.reflect.Field field : fields) {
77-
if (!field.isAnnotationPresent(Column.class) && !field.isAnnotationPresent(SplitTable.class)) {
76+
for (java.lang.reflect.Field property : fields) {
77+
if (!property.isAnnotationPresent(Column.class) && !property.isAnnotationPresent(SplitTable.class)) {
7878
continue;
7979
}
80-
Column column = field.getAnnotation(Column.class);
81-
SplitTable splitTable = field.getAnnotation(SplitTable.class);
82-
GeneratedValue generatedValue = field.getAnnotation(GeneratedValue.class);
83-
Id id = field.getAnnotation(Id.class);
80+
Column column = property.getAnnotation(Column.class);
81+
SplitTable splitTable = property.getAnnotation(SplitTable.class);
82+
GeneratedValue generatedValue = property.getAnnotation(GeneratedValue.class);
83+
Id id = property.getAnnotation(Id.class);
8484

85-
Field ormField = new Field(field.getName(), field.getType(), column, splitTable, generatedValue, id);
86-
fieldMap.put(field.getName(), ormField);
85+
Field ormField = new Field(property.getName(), property.getType(), column, splitTable, generatedValue, id);
86+
fieldMap.put(property.getName(), ormField);
8787
}
8888

8989
for (Method method : orderedMethods) {
@@ -104,45 +104,52 @@ private List<Field> extractFields(Class<?> clazz) {
104104
return new ArrayList<>(fieldMap.values());
105105
}
106106

107+
private void appendFields(StringBuilder fieldBuilder, String fieldNameOfDialect) {
108+
if (fieldBuilder.length() > 0) {
109+
fieldBuilder.append(",");
110+
}
111+
fieldBuilder.append(fieldNameOfDialect);
112+
}
113+
107114
public AbstractEntityManagerAdapter(Class<?> clazz) {
108115
this.clazz = clazz;
109116
this.className = clazz.getName();
110117
this.simpleClassName = clazz.getSimpleName();
111118
List<Field> fields = this.extractFields(clazz);
112119
int fieldCount = fields.size();
113120
uniqueFieldMap = new LinkedHashMap<>();
114-
columnPropertyMap = new LinkedHashMap<String, String>(fieldCount);
121+
this.columnPropertyMap = new LinkedHashMap<>(fieldCount);
122+
// 初始化字段列表
123+
this.propertyFieldMap = new LinkedHashMap<>(fieldCount);
115124
hashFieldMap = new TreeMap<>();
116125

126+
StringBuilder fieldBuilder = new StringBuilder();
117127
StringBuilder insertSQL = new StringBuilder("insert into ");
118128
StringBuilder insertParameter = new StringBuilder();
119129
StringBuilder updateSQL = new StringBuilder("update ");
120130
StringBuilder createDDLField = new StringBuilder();
121131
initTable();
122-
123132
updateSQL.append(this.dialectTableName);
124133
insertSQL.append(this.dialectTableName);
125-
126134
String createDDLHeader = String.format("DROP TABLE IF EXISTS %1$s;\nCREATE TABLE %1$s (\n", this.dialectTableName);
127135
String primaryCreateDDL = "";
128136
insertSQL.append("(");
129137
updateSQL.append(" set ");
130138
for (Field field : fields) {
131-
String propertyName = field.getName();
139+
String propertyName = field.getPropertyName();
132140
SplitTable splitTable = field.getSplitTable();
133141
if (splitTable != null) {
134142
this.hashFieldMap.put(splitTable.index(), field);
135143
if (!field.isPersistence()) {
136144
continue;
137145
}
138146
}
139-
140147
Column column = field.getColumn();
141148
if (column == null) {
142149
continue;
143150
}
144151
if (field.isUnique()) {
145-
uniqueFieldMap.put(field.getName(), field);
152+
uniqueFieldMap.put(field.getPropertyName(), field);
146153
}
147154
if ("status".equalsIgnoreCase(column.name())) {
148155
this.status = field;
@@ -159,17 +166,20 @@ public AbstractEntityManagerAdapter(Class<?> clazz) {
159166
}
160167

161168
this.columnPropertyMap.put(column.name(), propertyName);
162-
String fieldName = dialectReader.getOpenQuote() + column.name()
163-
+ dialectReader.getCloseQuote();
169+
this.propertyFieldMap.put(field.getPropertyName(), field);
170+
String fieldNameOfDialect = dialectAdapter.getOpenQuote() + column.name()
171+
+ dialectAdapter.getCloseQuote();
172+
this.appendFields(fieldBuilder, fieldNameOfDialect);
173+
164174
// insertSQL
165175
if (!TableSplitStrategy.ORIGIN_NOT_PERSISTENCE.equals(field.getHashStrategy()) && !GenerationType.IDENTITY.equals(field.getGenerationType())) {
166176
insertSQL.append("\n");
167-
insertSQL.append(fieldName);
177+
insertSQL.append(fieldNameOfDialect);
168178
insertSQL.append(Symbol.COMMA);
169179

170180
insertParameter.append("\n");
171181
insertParameter.append(this.parsePropertyParameter(column.name(), propertyName));
172-
insertParameter.append(",");
182+
insertParameter.append(Symbol.COMMA);
173183
}
174184

175185
// updateSQL
@@ -180,7 +190,7 @@ public AbstractEntityManagerAdapter(Class<?> clazz) {
180190

181191
if (column.updatable()) {
182192
updateSQL.append("\n");
183-
updateSQL.append(fieldName).append(Symbol.EQUAL);
193+
updateSQL.append(fieldNameOfDialect).append(Symbol.EQUAL);
184194
updateSQL.append(this.parsePropertyParameter(column.name(), propertyName));
185195
updateSQL.append(",");
186196
}
@@ -194,31 +204,19 @@ public AbstractEntityManagerAdapter(Class<?> clazz) {
194204
updateSQL.deleteCharAt(updateSQL.length() - 1)
195205
.append(" where ")
196206
.append(this.primary.getColumnName())
197-
.append("=").append(this.parsePropertyParameter(this.primary.getColumnName(), this.primary.getName()));
207+
.append("=").append(this.parsePropertyParameter(this.primary.getColumnName(), this.primary.getPropertyName()));
198208
String deleteSQL = "delete from " + this.dialectTableName + " where "
199-
+ this.primary.getColumnName() + "=" + this.parsePropertyParameter(this.primary.getColumnName(), this.primary.getName());
209+
+ this.primary.getColumnName() + "=" + this.parsePropertyParameter(this.primary.getColumnName(), this.primary.getPropertyName());
200210

201211
createDDLField.append(String.format("PRIMARY KEY (`%s`)\n", this.primary.getColumnName()));
202212
createDDLField.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='").append(tableName).append("';\n");
203213

204-
this.createDDL = createDDLHeader + primaryCreateDDL + createDDLField.toString();
214+
this.createDDL = createDDLHeader + primaryCreateDDL + createDDLField;
205215
this.insert = insertSQL.toString();
206216
// 初始化delete SQL语句
207217
this.delete = deleteSQL;
208218
// 初始化update SQL语句
209219
this.update = updateSQL.toString();
210-
// 初始化字段列表
211-
this.fieldMap = new LinkedHashMap<String, Field>(fieldCount);
212-
StringBuilder fieldBuilder = new StringBuilder();
213-
for (Field field : fields) {
214-
if (fieldBuilder.length() > 0) {
215-
fieldBuilder.append(",\n");
216-
}
217-
if (field.isPersistence()) {
218-
fieldBuilder.append(dialectReader.getOpenQuote()).append(field.getColumnName()).append(dialectReader.getCloseQuote());
219-
}
220-
this.fieldMap.put(field.getName(), field);
221-
}
222220
this.fields = fieldBuilder.toString();
223221
}
224222

@@ -237,18 +235,18 @@ public void initTable() {
237235
if (dialect != null) {
238236
dbDialect = dialect.strategy();
239237
}
240-
this.dialectReader = new DialectReader(dbDialect);
238+
this.dialectAdapter = new DialectAdapter(dbDialect);
241239
Split split = null;
242240
if (clazz.isAnnotationPresent(Split.class)) {
243241
split = clazz.getAnnotation(Split.class);
244242
}
245243

246244
if (split == null) {
247245
//`table-name`
248-
this.dialectTableName = String.format("%s%s%s", dialectReader.getOpenQuote(), tableName, dialectReader.getCloseQuote());
246+
this.dialectTableName = String.format("%s%s%s", dialectAdapter.getOpenQuote(), tableName, dialectAdapter.getCloseQuote());
249247
return;
250248
}
251-
this.dialectTableName = String.format("%s%s%s%s", dialectReader.getOpenQuote(), tableName, Constant.TABLE_SUFFIX, dialectReader.getCloseQuote());
249+
this.dialectTableName = String.format("%s%s%s%s", dialectAdapter.getOpenQuote(), tableName, Constant.TABLE_SUFFIX, dialectAdapter.getCloseQuote());
252250
// 分表的桶数
253251
int bucketCount;
254252
if (split.table_bucket_count() > 1) {
@@ -284,8 +282,8 @@ public String getDialectTableName() {
284282
}
285283

286284
@Override
287-
public DialectReader getDialect() {
288-
return dialectReader;
285+
public DialectAdapter getDialect() {
286+
return dialectAdapter;
289287
}
290288

291289
@Override
@@ -309,8 +307,8 @@ public String getFields() {
309307
}
310308

311309
@Override
312-
public Map<String, Field> getFieldMap() {
313-
return fieldMap;
310+
public Map<String, Field> getPropertyFieldMap() {
311+
return propertyFieldMap;
314312
}
315313

316314
@Override
@@ -329,7 +327,7 @@ public String getProperty(String columnName) {
329327

330328
@Override
331329
public Field getField(String property) {
332-
return fieldMap.get(property);
330+
return propertyFieldMap.get(property);
333331
}
334332

335333
@Override

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/DialectReader.java renamed to sparrow-orm/src/main/java/com/sparrow/orm/DialectAdapter.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
import java.util.HashMap;
2323
import java.util.Map;
2424

25-
public class DialectReader {
25+
public class DialectAdapter {
2626
private DBDialect dialect;
27-
private static Map<String, DialectReader> dialectMap = new HashMap<String, DialectReader>();
27+
private static Map<String, DialectAdapter> dialectMap = new HashMap<String, DialectAdapter>();
2828

2929

30-
public DialectReader(DBDialect dialect) {
30+
public DialectAdapter(DBDialect dialect) {
3131
this.dialect = dialect;
3232
}
3333

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/EntityManager.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public interface EntityManager {
3232

3333
String getDialectTableName();
3434

35-
DialectReader getDialect();
35+
DialectAdapter getDialect();
3636

3737
String getInsert();
3838

@@ -44,7 +44,7 @@ public interface EntityManager {
4444

4545
String getCreateDDL();
4646

47-
Map<String, Field> getFieldMap();
47+
Map<String, Field> getPropertyFieldMap();
4848

4949
Field getUniqueField(String unique);
5050

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/Field.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public Field(String property, Class<?> type, Column column, SplitTable splitTabl
4949
this.id = id;
5050
this.column = column;
5151
this.splitTable = splitTable;
52-
this.name = property;
52+
this.propertyName = property;
5353
this.type = type;
5454
this.generatedValue = generatedValue;
5555

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/OrmMetadataAccessor.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ public JDBCParameter insert(T model) {
106106
boolean isIncrement = false;
107107
List<Parameter> parameters = new ArrayList<Parameter>();
108108
Map<Integer, Object> tableSuffix = new TreeMap<Integer, Object>();
109-
for (Field field : this.entityManager.getFieldMap().values()) {
110-
Object o = this.methodAccessor.get(model, field.getName());
109+
for (Field field : this.entityManager.getPropertyFieldMap().values()) {
110+
Object o = this.methodAccessor.get(model, field.getPropertyName());
111111
if (field.getGenerationType() == null) {
112112
this.entityManager.parseField(field, parameters, o, tableSuffix, false);
113113
continue;
@@ -132,7 +132,7 @@ public JDBCParameter insert(T model) {
132132
id = idGenerator.generate();
133133
parameters.add(new Parameter(field, id));
134134
this.methodAccessor
135-
.set(model, field.getName(), id);
135+
.set(model, field.getPropertyName(), id);
136136
}
137137
break;
138138
case IDENTITY:
@@ -157,8 +157,8 @@ public JDBCParameter update(T model) {
157157
List<Parameter> parameters = new ArrayList<Parameter>();
158158
Parameter whereParameter = null;
159159
Map<Integer, Object> tableSuffix = new TreeMap<Integer, Object>();
160-
for (Field field : this.entityManager.getFieldMap().values()) {
161-
Object o = this.methodAccessor.get(model, field.getName());
160+
for (Field field : this.entityManager.getPropertyFieldMap().values()) {
161+
Object o = this.methodAccessor.get(model, field.getPropertyName());
162162
if (field.isPrimary()) {
163163
whereParameter = new Parameter(field, o);
164164
} else {

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/Parameter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Parameter(String propertyName,
6262

6363
public Parameter(Field field,
6464
Object parameterValue) {
65-
this.name = field.getName();
65+
this.name = field.getPropertyName();
6666
this.type = field.getType();
6767
this.value = parameterValue;
6868
this.scale = field.getScale();

Diff for: sparrow-orm/src/main/java/com/sparrow/orm/query/BooleanCriteria.java

+4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
package com.sparrow.orm.query;
1919

20+
import com.sparrow.protocol.SFunction;
21+
import com.sparrow.utility.ClassUtility;
22+
2023
import java.util.ArrayList;
2124
import java.util.List;
2225

@@ -30,6 +33,7 @@ public static BooleanCriteria criteria(Criteria criteria) {
3033
return new BooleanCriteria(criteria);
3134
}
3235

36+
3337
public static BooleanCriteria criteria(BooleanCriteria booleanCriteria) {
3438
return new BooleanCriteria(booleanCriteria);
3539
}

0 commit comments

Comments
 (0)