com.baomidou.mybatisplus.generator.config.po.TableInfo Maven / Gradle / Ivy
Show all versions of mybatis-plus-generate Show documentation
/**
* Copyright (c) 2011-2020, hubin ([email protected]).
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.baomidou.mybatisplus.generator.config.po;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
/**
*
* 表信息,关联到当前字段信息
*
*
* @author YangHu
* @since 2016/8/30
*/
public class TableInfo {
private boolean convert;
private String name;
private String comment;
private String entityName;
private String mapperName;
private String xmlName;
private String serviceName;
private String serviceImplName;
private String controllerName;
private List fields;
// 公共字段
private List commonFields;
private List importPackages = new ArrayList<>();
private String fieldNames;
public boolean isConvert() {
return convert;
}
protected void setConvert(StrategyConfig strategyConfig) {
if (strategyConfig.containsTablePrefix(name)) {
// 包含前缀
this.convert = true;
} else if (strategyConfig.isCapitalModeNaming(name)) {
// 包含
this.convert = false;
} else {
// 转换字段
if (StrategyConfig.DB_COLUMN_UNDERLINE) {
// 包含大写处理
if (StringUtils.containsUpperCase(name)) {
this.convert = true;
}
} else if (!entityName.equalsIgnoreCase(name)) {
this.convert = true;
}
}
}
public void setConvert(boolean convert) {
this.convert = convert;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getEntityPath() {
StringBuilder ep = new StringBuilder();
ep.append(entityName.substring(0, 1).toLowerCase());
ep.append(entityName.substring(1));
return ep.toString();
}
public String getEntityName() {
return entityName;
}
public void setEntityName(StrategyConfig strategyConfig, String entityName) {
this.entityName = entityName;
this.setConvert(strategyConfig);
}
public String getMapperName() {
return mapperName;
}
public void setMapperName(String mapperName) {
this.mapperName = mapperName;
}
public String getXmlName() {
return xmlName;
}
public void setXmlName(String xmlName) {
this.xmlName = xmlName;
}
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
public String getServiceImplName() {
return serviceImplName;
}
public void setServiceImplName(String serviceImplName) {
this.serviceImplName = serviceImplName;
}
public String getControllerName() {
return controllerName;
}
public void setControllerName(String controllerName) {
this.controllerName = controllerName;
}
public List getFields() {
return fields;
}
public void setFields(List fields) {
if (CollectionUtils.isNotEmpty(fields)) {
this.fields = fields;
// 收集导入包信息
Set pkgSet = new HashSet<>();
for (TableField field : fields) {
if (null != field.getColumnType() && null != field.getColumnType().getPkg()) {
pkgSet.add(field.getColumnType().getPkg());
}
if (field.isKeyFlag()) {
// 主键
if (field.isConvert() || field.isKeyIdentityFlag()) {
pkgSet.add("com.baomidou.mybatisplus.annotations.TableId");
}
// 自增
if (field.isKeyIdentityFlag()) {
pkgSet.add("com.baomidou.mybatisplus.enums.IdType");
}
} else if (field.isConvert()) {
// 普通字段
pkgSet.add("com.baomidou.mybatisplus.annotations.TableField");
}
if (null != field.getFill()) {
// 填充字段
pkgSet.add("com.baomidou.mybatisplus.annotations.TableField");
pkgSet.add("com.baomidou.mybatisplus.enums.FieldFill");
}
}
if (!pkgSet.isEmpty()) {
this.importPackages = new ArrayList<>(Arrays.asList(pkgSet.toArray(new String[]{})));
}
}
}
public List getCommonFields() {
return commonFields;
}
public void setCommonFields(List commonFields) {
this.commonFields = commonFields;
}
public List getImportPackages() {
return importPackages;
}
public void setImportPackages(String pkg) {
importPackages.add(pkg);
}
/**
* 逻辑删除
*/
public boolean isLogicDelete(String logicDeletePropertyName) {
for (TableField tableField : fields) {
if (tableField.getName().equals(logicDeletePropertyName)) {
return true;
}
}
return false;
}
/**
* 转换filed实体为xmlmapper中的basecolumn字符串信息
*
* @return
*/
public String getFieldNames() {
if (StringUtils.isEmpty(fieldNames)) {
StringBuilder names = new StringBuilder();
for (int i = 0; i < fields.size(); i++) {
TableField fd = fields.get(i);
if (i == fields.size() - 1) {
names.append(fd.getName());
} else {
names.append(fd.getName()).append(", ");
}
}
fieldNames = names.toString();
}
return fieldNames;
}
}