001package cn.mybatis.mp.generator.database.meta; 002 003import cn.mybatis.mp.core.util.NamingUtil; 004import cn.mybatis.mp.generator.config.GeneratorConfig; 005import cn.mybatis.mp.generator.util.GeneratorUtil; 006import lombok.Getter; 007import lombok.ToString; 008 009@Getter 010@ToString 011public class EntityFieldInfo { 012 013 @ToString.Exclude 014 private final EntityInfo entityInfo; 015 016 private final ColumnInfo columnInfo; 017 018 private final String name; 019 020 private final Class<?> type; 021 022 private final String typeName; 023 024 private final String remarks; 025 026 private final boolean select; 027 028 private final boolean update; 029 030 private final String defaultTableIdCode; 031 032 public EntityFieldInfo(GeneratorConfig generatorConfig, EntityInfo entityInfo, ColumnInfo columnInfo) { 033 this.entityInfo = entityInfo; 034 this.columnInfo = columnInfo; 035 this.update = !generatorConfig.getColumnConfig().getDisableUpdateColumns().contains(columnInfo.getName()); 036 this.name = GeneratorUtil.getEntityFieldName(generatorConfig, columnInfo); 037 this.remarks = GeneratorUtil.getEntityFieldRemarks(generatorConfig, columnInfo); 038 this.type = GeneratorUtil.getColumnType(generatorConfig, columnInfo); 039 if (this.type == byte[].class) { 040 this.select = false; 041 } else { 042 this.select = !generatorConfig.getColumnConfig().getDisableSelectColumns().contains(columnInfo.getName()); 043 } 044 this.typeName = this.type.getSimpleName(); 045 this.defaultTableIdCode = generatorConfig.getEntityConfig().getDefaultTableIdCode(); 046 } 047 048 public boolean isNeedTableFiled() { 049 return !select || !update; 050 } 051 052 public String buildTableField() { 053 StringBuilder stringBuilder = new StringBuilder("@TableField("); 054 if (!select) { 055 stringBuilder.append("select = false,"); 056 } 057 if (!update) { 058 stringBuilder.append("update = false,"); 059 } 060 stringBuilder = stringBuilder.deleteCharAt(stringBuilder.length() - 1); 061 062 stringBuilder.append(")"); 063 return stringBuilder.toString(); 064 } 065 066 public String getterMethodName() { 067 return (this.type == Boolean.class ? "is" : "get") + NamingUtil.firstToUpperCase(this.name); 068 } 069 070 public String setterMethodName() { 071 return "set" + NamingUtil.firstToUpperCase(this.name); 072 } 073 074 public String buildTableIdCode() { 075 if (!this.columnInfo.isPrimaryKey()) { 076 return null; 077 } 078 StringBuilder stringBuilder = new StringBuilder("@TableId"); 079 if (this.columnInfo.isAutoIncrement()) { 080 stringBuilder.append("(IdAutoType.AUTO)"); 081 } else { 082 if (this.defaultTableIdCode != null) { 083 return this.defaultTableIdCode; 084 } 085 stringBuilder.append("(IdAutoType.NONE)"); 086 } 087 return stringBuilder.toString(); 088 } 089}