Skip to content

Commit 21bbc68

Browse files
committed
1. 添加可生成实体文件夹前缀
2. 添加去除字段前缀、表前缀
1 parent 485c04d commit 21bbc68

File tree

7 files changed

+144
-20
lines changed

7 files changed

+144
-20
lines changed

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/ApiBootMybatisEnhanceCodegen.java

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.tools.CamelTools;
3838
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.writer.JavaClassWriter;
3939
import org.springframework.util.ObjectUtils;
40+
import org.springframework.util.StringUtils;
4041

4142
import java.io.File;
4243
import java.util.Arrays;
@@ -122,6 +123,16 @@ public class ApiBootMybatisEnhanceCodegen extends AbstractMojo {
122123
*/
123124
@Parameter(required = true)
124125
private String packageName;
126+
/**
127+
* ignore table name prefix
128+
*/
129+
@Parameter
130+
private String ignoreTablePrefix;
131+
/**
132+
* ignore column prefix
133+
*/
134+
@Parameter
135+
private boolean ignoreColumnPrefix = false;
125136

126137
@Override
127138
public void execute() throws MojoExecutionException, MojoFailureException {
@@ -151,17 +162,29 @@ public void execute() throws MojoExecutionException, MojoFailureException {
151162
DynamicEntityClassBuilder.class
152163
};
153164

165+
// ignore table prefix
166+
if (!StringUtils.isEmpty(ignoreTablePrefix)) {
167+
tableName = tableName.replace(ignoreTablePrefix, EnhanceCodegenConstant.EMPTY_STRING);
168+
}
169+
// formatter class name
170+
String className = CamelTools.upper(tableName);
171+
154172
// Encapsulated objects needed to perform generation
155-
ClassBuilderWrapper wrapper = ClassBuilderWrapper.builder().packageName(packageName).tableCamelName(CamelTools.upper(tableName)).table(table).build();
173+
ClassBuilderWrapper wrapper = ClassBuilderWrapper.builder().packageName(packageName).tableCamelName(className).table(table).ignoreColumnPrefix(ignoreColumnPrefix).build();
156174

157175
// execute generator
158176
Arrays.stream(builders).forEach(builderClass -> {
159177
ClassBuilder builder = ClassBuilderFactory.newInstance(builderClass, wrapper);
160178
if (!ObjectUtils.isEmpty(builder)) {
161179
// setting class prefix
162180
wrapper.setTableCamelName(builder.getDefaultPrefix() + wrapper.getTableCamelName());
181+
182+
// setting prefix dir
183+
if (!StringUtils.isEmpty(builder.getPrefixDir())) {
184+
wrapper.setPackageName(wrapper.getPackageName() + EnhanceCodegenConstant.POINT + builder.getPrefixDir());
185+
}
163186
// class file path
164-
String classPath = getNewClassPath(wrapper.getTableCamelName());
187+
String classPath = getNewClassPath(wrapper.getTableCamelName(), builder.getPrefixDir());
165188
// class content
166189
String classContent = builder.getClassContent();
167190
// invoke content write
@@ -184,13 +207,14 @@ private List<String> getTableNames(DataBase dataBase) {
184207
/**
185208
* get generator dir
186209
*
210+
* @param prefixDir prefix dir
187211
* @return generator dir
188212
*/
189-
private String getGeneratorDir() {
213+
private String getGeneratorDir(String prefixDir) {
190214
// java file base dir
191-
String baseDir = String.format("%s%s%s", projectBaseDir, File.separator, targetDir.replace(".", File.separator));
215+
String baseDir = String.format("%s%s%s", projectBaseDir, File.separator, targetDir.replace(EnhanceCodegenConstant.POINT, File.separator));
192216
// package dir
193-
String packageDir = String.format("%s%s%s", baseDir, File.separator, packageName.replace(".", File.separator));
217+
String packageDir = String.format("%s%s%s%s", baseDir, File.separator, packageName.replace(EnhanceCodegenConstant.POINT, File.separator), File.separator + prefixDir);
194218
// create dirs
195219
File dir = new File(packageDir);
196220
dir.mkdirs();
@@ -202,10 +226,11 @@ private String getGeneratorDir() {
202226
* get generator class path
203227
*
204228
* @param entityClassName entity class name
229+
* @param prefixDir prefix dir
205230
* @return class path
206231
*/
207-
private String getNewClassPath(String entityClassName) {
208-
return String.format("%s%s%s%s", getGeneratorDir(), File.separator, entityClassName, FILE_SUFFIX);
232+
private String getNewClassPath(String entityClassName, String prefixDir) {
233+
return String.format("%s%s%s%s", getGeneratorDir(prefixDir), File.separator, entityClassName, FILE_SUFFIX);
209234
}
210235

211236
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright [2019] [恒宇少年 - 于起宇]
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen;
19+
20+
/**
21+
* mybatis enhance codegen constant
22+
*
23+
* @author:恒宇少年 - 于起宇
24+
* <p>
25+
* DateTime:2019-05-25 13:50
26+
* Blog:http://blog.yuqiyu.com
27+
* WebSite:http://www.jianshu.com/u/092df3f77bca
28+
* Gitee:https://gitee.com/hengboy
29+
* GitHub:https://github.com/hengboy
30+
*/
31+
public interface EnhanceCodegenConstant {
32+
/**
33+
* point
34+
*/
35+
String POINT = ".";
36+
/**
37+
* empty string
38+
*/
39+
String EMPTY_STRING = "";
40+
}

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/builder/ClassBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,11 @@ public interface ClassBuilder {
4343
* @return
4444
*/
4545
String getDefaultPrefix();
46+
47+
/**
48+
* get prefix dir
49+
*
50+
* @return
51+
*/
52+
String getPrefixDir();
4653
}

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/builder/impl/AbstractClassBuilder.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.builder.impl;
1919

20+
import com.gitee.hengboy.builder.common.util.StringUtil;
2021
import lombok.Getter;
2122
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.builder.ClassBuilder;
2223
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.builder.wrapper.ClassBuilderWrapper;
@@ -35,17 +36,17 @@
3536
@Getter
3637
public abstract class AbstractClassBuilder implements ClassBuilder {
3738
/**
38-
* empty string
39+
* Underline
3940
*/
40-
public static final String EMPTY_STRING = "";
41+
public static final String UNDERLINE = "_";
4142
/**
4243
* author
4344
*/
4445
public static final String AUTHOR = "@author ApiBoot Mybatis Enhance Codegen";
4546
/**
4647
* field placeholder
4748
*/
48-
public static final String FIELD = "private %s %s;";
49+
public static final String FIELD = "private %s %s%s;";
4950
/**
5051
* Column Annotation
5152
*/
@@ -101,4 +102,24 @@ public AbstractClassBuilder(ClassBuilderWrapper classBuilderWrapper) {
101102
public String getDefaultPrefix() {
102103
return "";
103104
}
105+
106+
/**
107+
* Name of field corresponding to formatted column
108+
*
109+
* @param columnName column name
110+
* @return
111+
*/
112+
protected String formatterJavaPropertyName(String columnName) {
113+
try {
114+
if (getWrapper().isIgnoreColumnPrefix()) {
115+
columnName = columnName.substring(columnName.indexOf(UNDERLINE) + 1);
116+
}
117+
} catch (Exception e) {
118+
e.printStackTrace();
119+
} finally {
120+
columnName = StringUtil.getCamelCaseString(columnName, false);
121+
}
122+
123+
return columnName;
124+
}
104125
}

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/builder/impl/DynamicEntityClassBuilder.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.mysema.codegen.model.Parameter;
2727
import com.mysema.codegen.model.SimpleType;
2828
import com.mysema.codegen.model.Types;
29+
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.EnhanceCodegenConstant;
2930
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.builder.wrapper.ClassBuilderWrapper;
3031

3132
import java.io.StringWriter;
@@ -46,6 +47,10 @@ public class DynamicEntityClassBuilder extends AbstractClassBuilder {
4647
* dynamic class prefix
4748
*/
4849
private static final String DYNAMIC_CLASS_PREFIX = "D";
50+
/**
51+
* dynamic prefix dir
52+
*/
53+
private static final String DYNAMIC_PREFIX_DIR = "dsl";
4954
/**
5055
* constructor parameter name
5156
*/
@@ -91,16 +96,16 @@ public String getClassContent() {
9196
// java doc
9297
writer.javadoc(table.getRemark(), AUTHOR);
9398
// begin class
94-
writer.beginClass(new SimpleType(getWrapper().getTableCamelName(), EMPTY_STRING, getWrapper().getTableCamelName()),
95-
new SimpleType(superClassName, EMPTY_STRING, superClassName));
99+
writer.beginClass(new SimpleType(getWrapper().getTableCamelName(), EnhanceCodegenConstant.EMPTY_STRING, getWrapper().getTableCamelName()),
100+
new SimpleType(superClassName, EnhanceCodegenConstant.EMPTY_STRING, superClassName));
96101

97102
// constructor
98103
writer.beginConstructor(new Parameter(CONSTRUCTOR_PARAMETER_NAME, Types.STRING));
99104
writer.line(String.format(SUPER_CONSTRUCTOR, CONSTRUCTOR_PARAMETER_NAME));
100105
writer.end();
101106

102107
// dsl method
103-
writer.beginStaticMethod(new SimpleType(getWrapper().getTableCamelName(), EMPTY_STRING, getWrapper().getTableCamelName()), DYNAMIC_METHOD_NAME);
108+
writer.beginStaticMethod(new SimpleType(getWrapper().getTableCamelName(), EnhanceCodegenConstant.EMPTY_STRING, getWrapper().getTableCamelName()), DYNAMIC_METHOD_NAME);
104109
writer.line(String.format(DYNAMIC_INSTANCE, getWrapper().getTableCamelName(), table.getTableName()));
105110
writer.end();
106111

@@ -111,14 +116,14 @@ public String getClassContent() {
111116
Column column = table.getColumns().get(i);
112117
// column java doc
113118
writer.javadoc(column.getRemark());
114-
writer.line(String.format(COLUMN_EXPRESSION, column.getJavaProperty(), column.getColumnName()));
115-
columns.append(column.getJavaProperty());
116-
columns.append(i == table.getColumns().size() - 1 ? EMPTY_STRING : ", ");
119+
writer.line(String.format(COLUMN_EXPRESSION, formatterJavaPropertyName(column.getColumnName()), column.getColumnName()));
120+
columns.append(formatterJavaPropertyName(column.getColumnName()));
121+
columns.append(i == table.getColumns().size() - 1 ? EnhanceCodegenConstant.EMPTY_STRING : ", ");
117122
}
118123

119124
// getColumns method
120125
writer.annotation(Override.class);
121-
writer.beginPublicMethod(new SimpleType(COLUMN_EXPRESSION_ARRAY, EMPTY_STRING, COLUMN_EXPRESSION_ARRAY), GET_COLUMN_METHOD_NAME);
126+
writer.beginPublicMethod(new SimpleType(COLUMN_EXPRESSION_ARRAY, EnhanceCodegenConstant.EMPTY_STRING, COLUMN_EXPRESSION_ARRAY), GET_COLUMN_METHOD_NAME);
122127
writer.line(String.format(COLUMN_EXPRESSION_ARRAY_INSTANCE, columns.toString()));
123128
writer.end();
124129

@@ -138,11 +143,21 @@ public String getClassContent() {
138143
* @return entity name
139144
*/
140145
public String getEntityName(String camelName) {
141-
return camelName.replaceFirst(DYNAMIC_CLASS_PREFIX, EMPTY_STRING);
146+
return camelName.replaceFirst(DYNAMIC_CLASS_PREFIX, EnhanceCodegenConstant.EMPTY_STRING);
142147
}
143148

144149
@Override
145150
public String getDefaultPrefix() {
146151
return DYNAMIC_CLASS_PREFIX;
147152
}
153+
154+
/**
155+
* get dynamic prefix dir
156+
*
157+
* @return
158+
*/
159+
@Override
160+
public String getPrefixDir() {
161+
return DYNAMIC_PREFIX_DIR;
162+
}
148163
}

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/builder/impl/EntityClassBuilder.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import com.mysema.codegen.JavaWriter;
2626
import com.mysema.codegen.model.SimpleType;
2727
import lombok.Data;
28+
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.EnhanceCodegenConstant;
2829
import org.minbox.framework.api.boot.maven.plugin.mybatis.enhance.codegen.builder.wrapper.ClassBuilderWrapper;
30+
import org.springframework.util.StringUtils;
2931

3032
import java.io.IOException;
3133
import java.io.StringWriter;
@@ -77,7 +79,7 @@ public String getClassContent() {
7779
writer.line(String.format(TABLE_ANNOTATION, table.getTableName()));
7880

7981
// public class
80-
writer.beginClass(new SimpleType(getWrapper().getTableCamelName(), EMPTY_STRING, getWrapper().getTableCamelName()));
82+
writer.beginClass(new SimpleType(getWrapper().getTableCamelName(), EnhanceCodegenConstant.EMPTY_STRING, getWrapper().getTableCamelName()));
8183

8284
for (com.gitee.hengboy.builder.core.database.model.Column column : table.getColumns()) {
8385
// comment
@@ -88,7 +90,12 @@ public String getClassContent() {
8890
// @Column
8991
writer.line(String.format(COLUMN_ANNOTATION, column.getColumnName()));
9092
// private field
91-
writer.line(String.format(FIELD, column.getJavaType(), column.getJavaProperty()));
93+
String defaultValue = EnhanceCodegenConstant.EMPTY_STRING;
94+
if (!StringUtils.isEmpty(column.getDefaultValue())) {
95+
defaultValue = String.format(" = %s", column.getDefaultValue());
96+
}
97+
98+
writer.line(String.format(FIELD, column.getJavaType(), formatterJavaPropertyName(column.getColumnName()), defaultValue));
9299
}
93100

94101
// end class
@@ -123,4 +130,9 @@ void chooseImport(com.gitee.hengboy.builder.core.database.model.Table table, Cod
123130
writer.imports(Timestamp.class);
124131
}
125132
}
133+
134+
@Override
135+
public String getPrefixDir() {
136+
return EnhanceCodegenConstant.EMPTY_STRING;
137+
}
126138
}

api-boot-project/api-boot-maven-plugins/api-boot-mybatis-enhance-maven-codegen/src/main/java/org/minbox/framework/api/boot/maven/plugin/mybatis/enhance/codegen/builder/wrapper/ClassBuilderWrapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,8 @@ public class ClassBuilderWrapper {
4949
* current table
5050
*/
5151
private Table table;
52+
/**
53+
* ignore column prefix
54+
*/
55+
private boolean ignoreColumnPrefix;
5256
}

0 commit comments

Comments
 (0)