fixed globalConfig.setEntityWithLombok(true) Not working;add multi tablePrefix config support

This commit is contained in:
开源海哥 2023-03-27 12:20:45 +08:00
parent 42dbdefd5b
commit 8fab35034e
6 changed files with 53 additions and 10 deletions

View File

@ -57,6 +57,14 @@
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>

View File

@ -102,6 +102,7 @@ public class Generator {
private void buildTableColumns(Table table) throws SQLException { private void buildTableColumns(Table table) throws SQLException {
Map<String, String> columnRemarks = buildColumnRemarks(table); Map<String, String> columnRemarks = buildColumnRemarks(table);
String sql = dialect.forBuildColumns(table.getName()); String sql = dialect.forBuildColumns(table.getName());

View File

@ -33,7 +33,7 @@ public class GlobalConfig {
private String entityPackage; private String entityPackage;
//entity 是否使用 Lombok //entity 是否使用 Lombok
private Boolean entityWithLombok = false; private boolean entityWithLombok = false;
//是否生成 mapper //是否生成 mapper
private boolean mapperGenerateEnable = false; private boolean mapperGenerateEnable = false;
@ -41,7 +41,7 @@ public class GlobalConfig {
//mapper 的包名 //mapper 的包名
private String mapperPackage; private String mapperPackage;
//数据库表前缀 //数据库表前缀多个前缀用英文逗号, 隔开
private String tablePrefix; private String tablePrefix;
//逻辑删除的默认字段名称 //逻辑删除的默认字段名称
@ -91,11 +91,11 @@ public class GlobalConfig {
this.entityPackage = entityPackage.trim(); this.entityPackage = entityPackage.trim();
} }
public Boolean getEntityWithLombok() { public boolean isEntityWithLombok() {
return entityWithLombok; return entityWithLombok;
} }
public void setEntityWithLombok(Boolean entityWithLombok) { public void setEntityWithLombok(boolean entityWithLombok) {
this.entityWithLombok = entityWithLombok; this.entityWithLombok = entityWithLombok;
} }

View File

@ -99,6 +99,18 @@ public class Table {
imports.addAll(column.getImportClasses()); imports.addAll(column.getImportClasses());
} }
//开启 lombok
if (globalConfig.isEntityWithLombok()) {
//import lombok.AllArgsConstructor;
//import lombok.Builder;
//import lombok.Data;
//import lombok.NoArgsConstructor;
imports.add("lombok.AllArgsConstructor");
imports.add("lombok.Builder");
imports.add("lombok.Data");
imports.add("lombok.NoArgsConstructor");
}
if (tableConfig != null) { if (tableConfig != null) {
if (tableConfig.getInsertListenerClass() != null) { if (tableConfig.getInsertListenerClass() != null) {
imports.add(tableConfig.getInsertListenerClass().getName()); imports.add(tableConfig.getInsertListenerClass().getName());
@ -120,8 +132,15 @@ public class Table {
public String buildEntityClassName() { public String buildEntityClassName() {
String entityJavaFileName = name; String entityJavaFileName = name;
String tablePrefix = globalConfig.getTablePrefix(); String tablePrefix = globalConfig.getTablePrefix();
if (tablePrefix != null && name.startsWith(tablePrefix)) { if (tablePrefix != null) {
entityJavaFileName = name.substring(tablePrefix.length()); String[] tablePrefixes = tablePrefix.split(",");
for (String prefix : tablePrefixes) {
String trimPrefix = prefix.trim();
if (trimPrefix.length() > 0 && name.startsWith(trimPrefix)) {
entityJavaFileName = name.substring(trimPrefix.length());
break;
}
}
} }
return StringUtil.firstCharToUpperCase(StringUtil.underlineToCamel(entityJavaFileName)); return StringUtil.firstCharToUpperCase(StringUtil.underlineToCamel(entityJavaFileName));
} }
@ -130,8 +149,19 @@ public class Table {
* 构建 @Table(...) 注解 * 构建 @Table(...) 注解
*/ */
public String buildTableAnnotation() { public String buildTableAnnotation() {
StringBuilder tableAnnotation = new StringBuilder("@Table("); StringBuilder tableAnnotation = new StringBuilder();
tableAnnotation.append("value = \"").append(name).append("\""); if (globalConfig.isEntityWithLombok()) {
//@Data
//@Builder
//@NoArgsConstructor
//@AllArgsConstructor
tableAnnotation.append("@Data\n");
tableAnnotation.append("@Builder\n");
tableAnnotation.append("@NoArgsConstructor\n");
tableAnnotation.append("@AllArgsConstructor\n");
}
tableAnnotation.append("@Table(value = \"").append(name).append("\"");
if (tableConfig != null) { if (tableConfig != null) {
if (tableConfig.getSchema() != null) { if (tableConfig.getSchema() != null) {

View File

@ -13,6 +13,7 @@ public class #(table.buildEntityClassName()) {
#end #end
#if(!globalConfig.isEntityWithLombok())
#for(column: table.columns) #for(column: table.columns)
public #(column.propertySimpleType) #(column.buildGetter())() { public #(column.propertySimpleType) #(column.buildGetter())() {
return #(column.property); return #(column.property);
@ -23,4 +24,5 @@ public class #(table.buildEntityClassName()) {
} }
#end #end
#end
} }

View File

@ -35,12 +35,14 @@ public class GeneratorTest {
GlobalConfig globalConfig = new GlobalConfig(); GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSourceDir(System.getProperty("user.dir") + "/src/test/java"); globalConfig.setSourceDir(System.getProperty("user.dir") + "/src/test/java");
// globalConfig.setTablePrefix("tb_");
// globalConfig.setEntityWithLombok(true);
//设置只生成哪些表 //设置只生成哪些表
globalConfig.addGenerateTable("account", "account_session"); globalConfig.addGenerateTable("tb_account", "account_session");
//设置 entity 的包名 //设置 entity 的包名
globalConfig.setEntityPackage("com.test.test"); globalConfig.setEntityPackage("com.test.entity");
//是否生成 mapper 默认为 false //是否生成 mapper 默认为 false
globalConfig.setMapperGenerateEnable(true); globalConfig.setMapperGenerateEnable(true);