fix

上级 e60aa543
......@@ -37,7 +37,11 @@ public class MapperMetadata <T extends JpaBaseDomain>{
/**
* 表名和字段名
*/
public static boolean TABLE_COLUMN_UPCASE = true;
public static boolean TABLE_COLUMN_UPCASE = true;
public static boolean TABLE_COLUMN_ESCAPE = false;
public static String TABLE_COLUMN_ESCAPE_CHAR = "`";
public transient static ConcurrentMap<String, List<FieldColumnMapper>> fieldsMap = new ConcurrentHashMap<String, List<FieldColumnMapper>>();
public transient static ConcurrentMap<String, String> sqlsMap = new ConcurrentHashMap<String, String>();
public static IdentifierGeneratorFactory identifierGeneratorFactory=new IdentifierGeneratorFactory();
......@@ -50,7 +54,9 @@ public class MapperMetadata <T extends JpaBaseDomain>{
} else {
tablename = entityClass.getClass().getSimpleName();
}
return TABLE_COLUMN_UPCASE ? tablename.toUpperCase() : tablename;
tablename = TABLE_COLUMN_UPCASE ? tablename.toUpperCase() : tablename;
tablename = TABLE_COLUMN_ESCAPE ? TABLE_COLUMN_ESCAPE_CHAR + tablename + TABLE_COLUMN_ESCAPE_CHAR : tablename;
return tablename;
}
public static FieldColumnMapper getIdColumn(String classSimpleName) {
......@@ -81,18 +87,21 @@ public class MapperMetadata <T extends JpaBaseDomain>{
FieldColumnMapper fieldColumnMapper=new FieldColumnMapper();
fieldColumnMapper.setFieldName( field.getName());
fieldColumnMapper.setFieldType(field.getType().getSimpleName());
String columnName = "";
Column columnAnnotation = (Column) field.getAnnotation(Column.class);
if (columnAnnotation.name() != null && !columnAnnotation.name().equals("")) {
fieldColumnMapper.setColumnName(columnAnnotation.name());
columnName = columnAnnotation.name();
} else {
if (TABLE_COLUMN_UPCASE) {
fieldColumnMapper.setColumnName(field.getName().toUpperCase());
} else {
fieldColumnMapper.setColumnName(field.getName());
}
columnName = TABLE_COLUMN_UPCASE ?
field.getName().toUpperCase() : field.getName();
}
columnName = TABLE_COLUMN_ESCAPE ?
TABLE_COLUMN_ESCAPE_CHAR + columnName + TABLE_COLUMN_ESCAPE_CHAR
: columnName;
fieldColumnMapper.setColumnName(columnName);
if(field.isAnnotationPresent(Id.class)) {
fieldColumnMapper.setIdColumn(true);
}
......
......@@ -22,7 +22,7 @@ config.datasource.database=mysql
# for Derby jdbc:derby://localhost:1527/secdb
#
config.datasource.driverclass=com.mysql.jdbc.Driver
config.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&characterEncoding=UTF-8
config.datasource.url=jdbc:mysql://localhost/test?autoReconnect=false&characterEncoding=UTF-8&serverTimezone=UTC
config.datasource.username=root
config.datasource.password=maxkey
......
......@@ -32,6 +32,7 @@ import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.TypeHandler;
import org.apache.mybatis.jpa.MyBatisSessionFactoryBean;
import org.apache.mybatis.jpa.persistence.MapperMetadata;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.mapper.MapperFactoryBean;
......@@ -151,6 +152,17 @@ public class MybatisAutoConfiguration implements InitializingBean {
factory.setDialect(this.properties.getDialect());
}
if(this.properties.isTableColumnEscape()) {
MapperMetadata.TABLE_COLUMN_ESCAPE = true;
if(StringUtils.hasLength(this.properties.getTableColumnEscapeChar())) {
MapperMetadata.TABLE_COLUMN_ESCAPE_CHAR = this.properties.getTableColumnEscapeChar();
}
}
if(this.properties.isTableColumnUpcase()) {
MapperMetadata.TABLE_COLUMN_UPCASE = true;
}
if (this.databaseIdProvider != null) {
factory.setDatabaseIdProvider(this.databaseIdProvider);
}
......
......@@ -59,6 +59,13 @@ public class MybatisProperties {
private String typeAliasesPackage;
private String dialect;
private boolean tableColumnEscape;
private String tableColumnEscapeChar;
private boolean tableColumnUpcase;
/**
* The super class for filtering type alias. If this not specifies, the MyBatis deal as type alias all classes that
* searched from typeAliasesPackage.
......@@ -214,12 +221,36 @@ public class MybatisProperties {
}
}
public String getDialect() {
return dialect;
}
public void setDialect(String dialect) {
this.dialect = dialect;
}
public boolean isTableColumnEscape() {
return tableColumnEscape;
}
public void setTableColumnEscape(boolean tableColumnEscape) {
this.tableColumnEscape = tableColumnEscape;
}
public String getTableColumnEscapeChar() {
return tableColumnEscapeChar;
}
public void setTableColumnEscapeChar(String tableColumnEscapeChar) {
this.tableColumnEscapeChar = tableColumnEscapeChar;
}
public boolean isTableColumnUpcase() {
return tableColumnUpcase;
}
public void setTableColumnUpcase(boolean tableColumnUpcase) {
this.tableColumnUpcase = tableColumnUpcase;
}
public String getDialect() {
return dialect;
}
public void setDialect(String dialect) {
this.dialect = dialect;
}
}
......@@ -2,10 +2,12 @@ spring.main.web-application-type=NONE
#
spring.datasource.username=root
spring.datasource.password=maxkey
spring.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&characterEncoding=UTF-8
spring.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=org.apache.mybatis.jpa.test.domain
mybatis.mapper-locations=classpath*:/org/apache/mybatis/jpa/test/dao/persistence/xml/mysql/*.xml
\ No newline at end of file
mybatis.mapper-locations=classpath*:/org/apache/mybatis/jpa/test/dao/persistence/xml/mysql/*.xml
mybatis.table-column-escape=true
mybatis.table-column-escape-char=`
\ No newline at end of file
......@@ -11,12 +11,12 @@
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
......
......@@ -22,7 +22,7 @@
<springboot.version>2.2.6.RELEASE</springboot.version>
<commons-dbcp2.version>2.1.1</commons-dbcp2.version>
<commons-pool2.version>2.4.2</commons-pool2.version>
<mysql-connnector.version>5.1.30</mysql-connnector.version>
<mysql-connnector.version>8.0.21</mysql-connnector.version>
<servlet-api.version>3.1.0</servlet-api.version>
<commons-io.version>2.4</commons-io.version>
<commons-codec.version>1.9</commons-codec.version>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册