Skip to content

Commit 1ea2629

Browse files
committed
优化代码生成器.
1 parent ae6924e commit 1ea2629

File tree

5 files changed

+52
-100
lines changed

5 files changed

+52
-100
lines changed

mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

-61
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,8 @@
1515
*/
1616
package com.baomidou.mybatisplus.generator;
1717

18-
import com.baomidou.mybatisplus.annotation.TableId;
19-
import com.baomidou.mybatisplus.annotation.TableLogic;
20-
import com.baomidou.mybatisplus.annotation.TableName;
21-
import com.baomidou.mybatisplus.annotation.Version;
22-
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
23-
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
24-
import com.baomidou.mybatisplus.extension.activerecord.Model;
2518
import com.baomidou.mybatisplus.generator.config.*;
2619
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
27-
import com.baomidou.mybatisplus.generator.config.po.TableField;
2820
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
2921
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
3022
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
@@ -36,9 +28,7 @@
3628
import org.slf4j.Logger;
3729
import org.slf4j.LoggerFactory;
3830

39-
import java.io.Serializable;
4031
import java.util.List;
41-
import java.util.stream.Collectors;
4232

4333
/**
4434
* 生成文件
@@ -128,57 +118,6 @@ protected ConfigBuilder pretreatmentConfigBuilder(ConfigBuilder config) {
128118
injectionConfig.initMap();
129119
config.setInjectionConfig(injectionConfig);
130120
}
131-
/*
132-
* 表信息列表
133-
*/
134-
List<TableInfo> tableList = this.getAllTableInfoList(config);
135-
for (TableInfo tableInfo : tableList) {
136-
/* ---------- 添加导入包 ---------- */
137-
if (config.getGlobalConfig().isActiveRecord()) {
138-
// 开启 ActiveRecord 模式
139-
tableInfo.setImportPackages(Model.class.getCanonicalName());
140-
}
141-
if (tableInfo.isConvert()) {
142-
// 表注解
143-
tableInfo.setImportPackages(TableName.class.getCanonicalName());
144-
}
145-
if (config.getStrategyConfig().getLogicDeleteFieldName() != null && tableInfo.isLogicDelete(config.getStrategyConfig().getLogicDeleteFieldName())) {
146-
// 逻辑删除注解
147-
tableInfo.setImportPackages(TableLogic.class.getCanonicalName());
148-
}
149-
if (StringUtils.isNotBlank(config.getStrategyConfig().getVersionFieldName())) {
150-
// 乐观锁注解
151-
tableInfo.setImportPackages(Version.class.getCanonicalName());
152-
}
153-
boolean importSerializable = true;
154-
if (StringUtils.isNotBlank(config.getStrategyConfig().getSuperEntityClass())) {
155-
// 父实体
156-
tableInfo.setImportPackages(config.getStrategyConfig().getSuperEntityClass());
157-
importSerializable = false;
158-
}
159-
if (config.getGlobalConfig().isActiveRecord()) {
160-
importSerializable = true;
161-
}
162-
if (importSerializable) {
163-
tableInfo.setImportPackages(Serializable.class.getCanonicalName());
164-
}
165-
// Boolean类型is前缀处理
166-
if (config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix()
167-
&& CollectionUtils.isNotEmpty(tableInfo.getFields())) {
168-
List<TableField> tableFields = tableInfo.getFields().stream().filter(field -> "boolean".equalsIgnoreCase(field.getPropertyType()))
169-
.filter(field -> field.getPropertyName().startsWith("is")).collect(Collectors.toList());
170-
tableFields.forEach(field -> {
171-
//主键为is的情况基本上是不存在的.
172-
if (field.isKeyFlag()) {
173-
tableInfo.setImportPackages(TableId.class.getCanonicalName());
174-
} else {
175-
tableInfo.setImportPackages(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());
176-
}
177-
field.setConvert(true);
178-
field.setPropertyName(StringUtils.removePrefixAfterPrefixToLower(field.getPropertyName(), 2));
179-
});
180-
}
181-
}
182121
return config;
183122
}
184123

mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/INameConvert.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ public String entityNameConvert(TableInfo tableInfo) {
6666

6767
@Override
6868
public String propertyNameConvert(TableField field) {
69-
return processName(field.getName(), strategyConfig.getNaming(), strategyConfig.getTablePrefix());
69+
String name = processName(field.getName(), strategyConfig.getNaming(), strategyConfig.getTablePrefix());
70+
//TODO 暂时先放在这里调用,后面要改掉才行!!!!!
71+
field.setPropertyName(strategyConfig, name);
72+
return name;
7073
}
7174

7275
private String processName(String name, NamingStrategy strategy, Set<String> prefix) {

mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

+1-31
Original file line numberDiff line numberDiff line change
@@ -160,40 +160,10 @@ private void processTable() {
160160
} else {
161161
tableInfo.setControllerName(entityName + ConstVal.CONTROLLER);
162162
}
163-
// 检测导入包
164-
checkImportPackages(tableInfo);
163+
tableInfo.importPackage(strategyConfig, globalConfig);
165164
}
166165
}
167166

168-
/**
169-
* 检测导入包
170-
*
171-
* @param tableInfo ignore
172-
*/
173-
private void checkImportPackages(TableInfo tableInfo) {
174-
if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
175-
// 自定义父类
176-
tableInfo.getImportPackages().add(strategyConfig.getSuperEntityClass());
177-
} else if (globalConfig.isActiveRecord()) {
178-
// 无父类开启 AR 模式
179-
tableInfo.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
180-
}
181-
if (null != globalConfig.getIdType() && tableInfo.isHavePrimaryKey()) {
182-
// 指定需要 IdType 场景
183-
tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
184-
tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
185-
}
186-
if (StringUtils.isNotBlank(strategyConfig.getVersionFieldName())
187-
&& CollectionUtils.isNotEmpty(tableInfo.getFields())) {
188-
tableInfo.getFields().forEach(f -> {
189-
if (strategyConfig.getVersionFieldName().equals(f.getName())) {
190-
tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.Version.class.getCanonicalName());
191-
}
192-
});
193-
}
194-
}
195-
196-
197167
/**
198168
* 获取所有的数据库表信息
199169
*/

mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ protected TableField setConvert(StrategyConfig strategyConfig) {
8989
}
9090

9191
public TableField setPropertyName(StrategyConfig strategyConfig, String propertyName) {
92+
//TODO 这个好像是苗老板写的,有空打死他吧.
93+
if (strategyConfig.isEntityBooleanColumnRemoveIsPrefix()
94+
&& "boolean".equalsIgnoreCase(this.getPropertyType()) && this.getPropertyName().startsWith("is")) {
95+
this.convert = true;
96+
propertyName = StringUtils.removePrefixAfterPrefixToLower(this.getPropertyName(), 2);
97+
}
9298
this.propertyName = propertyName;
9399
this.setConvert(strategyConfig);
94100
return this;
@@ -134,5 +140,4 @@ public String getAnnotationColumnName() {
134140
}
135141
return columnName;
136142
}
137-
138143
}

mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

+41-6
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@
1515
*/
1616
package com.baomidou.mybatisplus.generator.config.po;
1717

18+
import java.io.Serializable;
1819
import java.util.HashSet;
1920
import java.util.List;
2021
import java.util.Set;
2122
import java.util.stream.IntStream;
2223

24+
import com.baomidou.mybatisplus.annotation.TableLogic;
25+
import com.baomidou.mybatisplus.annotation.TableName;
2326
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
2427
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
28+
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
2529
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
2630
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
2731

@@ -124,12 +128,8 @@ public TableInfo setFields(List<TableField> fields) {
124128
}
125129

126130
public TableInfo setImportPackages(String pkg) {
127-
if (importPackages.contains(pkg)) {
128-
return this;
129-
} else {
130-
importPackages.add(pkg);
131-
return this;
132-
}
131+
importPackages.add(pkg);
132+
return this;
133133
}
134134

135135
/**
@@ -159,4 +159,39 @@ public String getFieldNames() {
159159
return fieldNames;
160160
}
161161

162+
public void importPackage(StrategyConfig strategyConfig, GlobalConfig globalConfig){
163+
boolean importSerializable = true;
164+
if (StringUtils.isNotBlank(strategyConfig.getSuperEntityClass())) {
165+
// 自定义父类
166+
importSerializable = false;
167+
this.importPackages.add(strategyConfig.getSuperEntityClass());
168+
} else {
169+
if (globalConfig.isActiveRecord()) {
170+
// 无父类开启 AR 模式
171+
this.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
172+
}
173+
}
174+
if (importSerializable) {
175+
this.setImportPackages(Serializable.class.getCanonicalName());
176+
}
177+
if (this.isConvert()) {
178+
this.importPackages.add(TableName.class.getCanonicalName());
179+
}
180+
if (strategyConfig.getLogicDeleteFieldName() != null && this.isLogicDelete(strategyConfig.getLogicDeleteFieldName())) {
181+
this.importPackages.add(TableLogic.class.getCanonicalName());
182+
}
183+
if (null != globalConfig.getIdType() && this.isHavePrimaryKey()) {
184+
// 指定需要 IdType 场景
185+
this.importPackages.add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
186+
this.importPackages.add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());
187+
}
188+
if (StringUtils.isNotBlank(strategyConfig.getVersionFieldName())
189+
&& CollectionUtils.isNotEmpty(this.getFields())) {
190+
this.getFields().forEach(f -> {
191+
if (strategyConfig.getVersionFieldName().equals(f.getName())) {
192+
this.importPackages.add(com.baomidou.mybatisplus.annotation.Version.class.getCanonicalName());
193+
}
194+
});
195+
}
196+
}
162197
}

0 commit comments

Comments
 (0)