Skip to content

Commit da8abdb

Browse files
committed
Mapper插件支持beginningDelimiter和endingDelimiter
1 parent cb7fe79 commit da8abdb

File tree

3 files changed

+47
-10
lines changed

3 files changed

+47
-10
lines changed

src/main/java/tk/mybatis/mapper/generator/MapperCommentGenerator.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
import java.util.Properties;
3737

3838
public class MapperCommentGenerator implements CommentGenerator {
39+
//开始的分隔符,例如mysql为`,sqlserver为[
40+
private String beginningDelimiter = "";
41+
//结束的分隔符,例如mysql为`,sqlserver为]
42+
private String endingDelimiter = "";
3943

4044
public MapperCommentGenerator() {
4145
super();
@@ -64,6 +68,18 @@ public void addRootComment(XmlElement rootElement) {
6468
}
6569

6670
public void addConfigurationProperties(Properties properties) {
71+
String beginningDelimiter = properties.getProperty("beginningDelimiter");
72+
if (StringUtility.stringHasValue(beginningDelimiter)) {
73+
this.beginningDelimiter = beginningDelimiter;
74+
}
75+
String endingDelimiter = properties.getProperty("endingDelimiter");
76+
if (StringUtility.stringHasValue(endingDelimiter)) {
77+
this.endingDelimiter = endingDelimiter;
78+
}
79+
}
80+
81+
public String getDelimiterName(String name) {
82+
return beginningDelimiter + name + endingDelimiter;
6783
}
6884

6985
/**
@@ -129,7 +145,7 @@ public void addFieldComment(Field field, IntrospectedTable introspectedTable, In
129145
}
130146
if (!column.equals(introspectedColumn.getJavaProperty())) {
131147
//@Column
132-
field.addAnnotation("@Column(name = \"" + column + "\")");
148+
field.addAnnotation("@Column(name = \"" + getDelimiterName(column) + "\")");
133149
}
134150
if (introspectedColumn.isIdentity()) {
135151
if (introspectedTable.getTableConfiguration().getGeneratedKey().getRuntimeSqlStatement().equals("JDBC")) {

src/main/java/tk/mybatis/mapper/generator/MapperPlugin.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,18 @@
4848
public class MapperPlugin extends PluginAdapter {
4949
private Set<String> mappers = new HashSet<String>();
5050
private boolean caseSensitive = false;
51+
//开始的分隔符,例如mysql为`,sqlserver为[
52+
private String beginningDelimiter = "";
53+
//结束的分隔符,例如mysql为`,sqlserver为]
54+
private String endingDelimiter = "";
55+
//注释生成器
56+
private CommentGeneratorConfiguration commentCfg;
5157

5258
@Override
5359
public void setContext(Context context) {
5460
super.setContext(context);
5561
//设置默认的注释生成器
56-
CommentGeneratorConfiguration commentCfg = new CommentGeneratorConfiguration();
62+
commentCfg = new CommentGeneratorConfiguration();
5763
commentCfg.setConfigurationType(MapperCommentGenerator.class.getCanonicalName());
5864
context.setCommentGeneratorConfiguration(commentCfg);
5965
}
@@ -73,6 +79,20 @@ public void setProperties(Properties properties) {
7379
if (StringUtility.stringHasValue(caseSensitive)) {
7480
this.caseSensitive = caseSensitive.equalsIgnoreCase("TRUE");
7581
}
82+
String beginningDelimiter = this.properties.getProperty("beginningDelimiter");
83+
if (StringUtility.stringHasValue(beginningDelimiter)) {
84+
this.beginningDelimiter = beginningDelimiter;
85+
}
86+
commentCfg.addProperty("beginningDelimiter", this.beginningDelimiter);
87+
String endingDelimiter = this.properties.getProperty("endingDelimiter");
88+
if (StringUtility.stringHasValue(endingDelimiter)) {
89+
this.endingDelimiter = endingDelimiter;
90+
}
91+
commentCfg.addProperty("endingDelimiter", this.endingDelimiter);
92+
}
93+
94+
public String getDelimiterName(String name) {
95+
return beginningDelimiter + name + endingDelimiter;
7696
}
7797

7898
@Override
@@ -120,9 +140,9 @@ private void processEntityClass(TopLevelClass topLevelClass, IntrospectedTable i
120140
}
121141
//是否忽略大小写,对于区分大小写的数据库,会有用
122142
if (caseSensitive && !topLevelClass.getType().getShortName().equals(tableName)) {
123-
topLevelClass.addAnnotation("@Table(name = \"" + tableName + "\")");
143+
topLevelClass.addAnnotation("@Table(name = \"" + getDelimiterName(tableName) + "\")");
124144
} else if (!topLevelClass.getType().getShortName().equalsIgnoreCase(tableName)) {
125-
topLevelClass.addAnnotation("@Table(name = \"" + tableName + "\")");
145+
topLevelClass.addAnnotation("@Table(name = \"" + getDelimiterName(tableName) + "\")");
126146
}
127147
}
128148

src/test/resources/generator/generatorConfig.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,26 @@
2929

3030
<generatorConfiguration>
3131
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
32-
<property name="beginningDelimiter" value="`"/>
33-
<property name="endingDelimiter" value="`"/>
32+
<property name="javaFileEncoding" value="UTF-8"/>
3433

3534
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
3635
<property name="mappers" value="tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.hsqldb.HsqldbMapper"/>
3736
<property name="caseSensitive" value="true"/>
37+
<!--<property name="beginningDelimiter" value="`"/>-->
38+
<!--<property name="endingDelimiter" value="`"/>-->
3839
</plugin>
3940

4041
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
4142
connectionURL="jdbc:mysql://localhost:3306/test"
4243
userId="root"
43-
password="jj">
44+
password="">
4445
</jdbcConnection>
4546

46-
<javaModelGenerator targetPackage="test.model" targetProject="E:\Git\Mybatis\Mapper\src\test\java"/>
47+
<javaModelGenerator targetPackage="test.model" targetProject="./src/test/java"/>
4748

48-
<sqlMapGenerator targetPackage="mappers" targetProject="E:\Git\Mybatis\Mapper\src\test\resources"/>
49+
<sqlMapGenerator targetPackage="mappers" targetProject="./src/test/resources"/>
4950

50-
<javaClientGenerator targetPackage="test.mapper" targetProject="E:\Git\Mybatis\Mapper\src\test\java" type="XMLMAPPER" />
51+
<javaClientGenerator targetPackage="test.mapper" targetProject="./src/test/java" type="XMLMAPPER"/>
5152

5253
<table tableName="%" >
5354
<generatedKey column="id" sqlStatement="JDBC"/>

0 commit comments

Comments
 (0)