Skip to content

Commit 974474e

Browse files
author
wangliang
committed
BaseMapper 判断优化
1 parent 8106576 commit 974474e

File tree

8 files changed

+58
-48
lines changed

8 files changed

+58
-48
lines changed

src/main/java/com/codingapi/simplemybatis/parser/SqlParser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public String createQuery(Query query) {
4444

4545
public String createUpdateSql() {
4646
if (tableInfo.getIdColumnFiled().getValue() == null) {
47-
throw new RuntimeException("no Id value,do't create update sql.");
47+
throw new RuntimeException("no Id value,don't create update sql.");
4848
}
4949
StringBuilder stringBuilder = new StringBuilder();
5050
stringBuilder.append("update ");

src/main/java/com/codingapi/simplemybatis/parser/TableParser.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.codingapi.simplemybatis.parser;
22

3-
import com.codingapi.simplemybatis.properties.DbProperties.ColumnNameStyle;
4-
import com.codingapi.simplemybatis.properties.GlabelProperties;
3+
import com.codingapi.simplemybatis.properties.SimpleMybatisProperties.ColumnNameStyle;
4+
import com.codingapi.simplemybatis.properties.SimpleMybatisPropertiesContext;
55
import com.codingapi.simplemybatis.utils.StringCharacterUtils;
66
import org.apache.commons.beanutils.PropertyUtils;
77
import org.apache.commons.lang3.StringUtils;
@@ -36,15 +36,16 @@ public class TableParser {
3636

3737
public TableParser(Class<?> clazz) {
3838
this.clazz = clazz;
39-
columnNameStyle = GlabelProperties.getInstance().getColumnNameStyle();
39+
columnNameStyle = SimpleMybatisPropertiesContext.getInstance().getColumnNameStyle();
4040
propertyDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
4141
columns = new ArrayList<>();
4242
loadTableName();
4343
}
4444

4545

46-
public void parser(Object obj) throws IllegalAccessException, InvocationTargetException {
46+
public TableInfo parser(Object obj) throws IllegalAccessException, InvocationTargetException {
4747
loadColumnNames(obj);
48+
return new TableInfo(tableName, idColumn, columns);
4849
}
4950

5051
private void loadColumnNames(Object obj) throws IllegalAccessException, InvocationTargetException {
@@ -138,9 +139,6 @@ private String getColumnStyleName(String name) {
138139
}
139140
}
140141

141-
public TableInfo getTableInfo() {
142-
return new TableInfo(tableName, idColumn, columns);
143-
}
144142

145143

146144
public static class ColumnFiled {

src/main/java/com/codingapi/simplemybatis/properties/GlabelProperties.java

-25
This file was deleted.

src/main/java/com/codingapi/simplemybatis/properties/DbProperties.java renamed to src/main/java/com/codingapi/simplemybatis/properties/SimpleMybatisProperties.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.codingapi.simplemybatis.properties;
22

33

4-
public class DbProperties {
4+
public class SimpleMybatisProperties {
55

66
private ColumnNameStyle columnNameStyle = ColumnNameStyle.UNDERLINE;
77

@@ -12,4 +12,8 @@ public enum ColumnNameStyle {
1212
public ColumnNameStyle getColumnNameStyle() {
1313
return columnNameStyle;
1414
}
15+
16+
public void setColumnNameStyle(ColumnNameStyle columnNameStyle) {
17+
this.columnNameStyle = columnNameStyle;
18+
}
1519
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.codingapi.simplemybatis.properties;
2+
3+
4+
import com.codingapi.simplemybatis.properties.SimpleMybatisProperties.ColumnNameStyle;
5+
6+
public class SimpleMybatisPropertiesContext {
7+
8+
private static SimpleMybatisPropertiesContext instance;
9+
10+
public static SimpleMybatisPropertiesContext getInstance() {
11+
if(instance==null){
12+
synchronized (SimpleMybatisPropertiesContext.class){
13+
instance = new SimpleMybatisPropertiesContext();
14+
}
15+
}
16+
return instance;
17+
}
18+
19+
private final SimpleMybatisProperties simpleMybatisProperties;
20+
21+
private SimpleMybatisPropertiesContext() {
22+
simpleMybatisProperties = new SimpleMybatisProperties();
23+
}
24+
25+
public void setColumnNameStyle(ColumnNameStyle columnNameStyle) {
26+
simpleMybatisProperties.setColumnNameStyle(columnNameStyle);
27+
}
28+
29+
public ColumnNameStyle getColumnNameStyle() {
30+
return simpleMybatisProperties.getColumnNameStyle();
31+
}
32+
33+
34+
}

src/main/java/com/codingapi/simplemybatis/provider/BaseProvider.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.codingapi.simplemybatis.mapper.*;
44
import com.codingapi.simplemybatis.parser.SqlParser;
5+
import com.codingapi.simplemybatis.parser.TableInfo;
56
import com.codingapi.simplemybatis.parser.TableParser;
67
import org.apache.ibatis.builder.annotation.ProviderContext;
78

@@ -16,12 +17,9 @@ protected Class<?> entityType(ProviderContext context) {
1617
return Stream.of(context.getMapperType().getGenericInterfaces())
1718
.filter(ParameterizedType.class::isInstance)
1819
.map(ParameterizedType.class::cast)
19-
.filter(type -> (type.getRawType() == BaseMapper.class
20-
|| type.getRawType() == CommonMapper.class
21-
|| type.getRawType() == QueryMapper.class
22-
|| type.getRawType() == SimpleMapper.class
23-
|| type.getRawType() == TreeMapper.class
24-
|| type.getRawType() == PageMapper.class)
20+
.filter(
21+
(type) ->
22+
type.getRawType().getClass().isInstance(BaseMapper.class)
2523
)
2624
.findFirst()
2725
.map(type -> type.getActualTypeArguments()[0])
@@ -34,8 +32,8 @@ protected SqlParser createParser(Object obj, ProviderContext context)
3432
throws IllegalAccessException, InvocationTargetException {
3533
Class clazz = entityType(context);
3634
TableParser tableParser = new TableParser(clazz);
37-
tableParser.parser(obj);
38-
return new SqlParser(tableParser.getTableInfo());
35+
TableInfo tableInfo = tableParser.parser(obj);
36+
return new SqlParser(tableInfo);
3937
}
4038

4139
}

src/test/java/com/codingapi/simplemybatis/parser/SqlParserTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ private Demo createDemo(){
2222
private SqlParser createSqlParser() throws InvocationTargetException, IllegalAccessException {
2323
Demo demo = createDemo();
2424
TableParser tableParser = new TableParser(demo.getClass());
25-
tableParser.parser(demo);
26-
return new SqlParser(tableParser.getTableInfo());
25+
TableInfo tableInfo = tableParser.parser(demo);
26+
return new SqlParser(tableInfo);
2727
}
2828

2929
@Test
@@ -88,4 +88,4 @@ void createGetByIdSql() throws InvocationTargetException, IllegalAccessException
8888
String sql = sqlParser.createGetByIdSql();
8989
System.out.println(sql);
9090
}
91-
}
91+
}

src/test/java/com/codingapi/simplemybatis/query/QueryTest.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.codingapi.simplemybatis.entity.Demo;
44
import com.codingapi.simplemybatis.parser.SqlParser;
5+
import com.codingapi.simplemybatis.parser.TableInfo;
56
import com.codingapi.simplemybatis.parser.TableParser;
67
import org.junit.jupiter.api.Test;
78

@@ -24,8 +25,8 @@ private Demo createDemo(){
2425
private SqlParser createSqlParser() throws InvocationTargetException, IllegalAccessException {
2526
Demo demo = createDemo();
2627
TableParser tableParser = new TableParser(demo.getClass());
27-
tableParser.parser(demo);
28-
return new SqlParser(tableParser.getTableInfo());
28+
TableInfo tableInfo = tableParser.parser(demo);
29+
return new SqlParser(tableInfo);
2930
}
3031

3132

@@ -114,4 +115,4 @@ void queryNotNullView() throws InvocationTargetException, IllegalAccessException
114115
}
115116

116117

117-
}
118+
}

0 commit comments

Comments
 (0)