通过配置的形式加入实体类自定义属性,实现对实体类的扩展。
版本信息
生成器版本: 3.5.1
数据库版本: SQL Server 2016
模板引擎版本: Velocity
问题详情
现扩展方式:手动在实体类增加属性并在加注解 ```java @Getter @Setter @Accessors(chain = true) @TableName("ygw_group") public class YgwGroupPo implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id")
private Long id;
@TableField("name")
private String name;
@TableField(exist = false)
private String extend;
}
该扩展方式能满足常用需求,但是不够友好。当数据库新增字段时需重新生成,此时会覆盖原自定义属性,在多人合作时会出现把他人的自定义属性覆盖。如果能在生成前配置,能统一解决覆盖问题。
#### 复现步骤
#### 错误结果
#### 期望结果
希望可以通过这种形式配置扩展的自定义属性:
```java
FastAutoGenerator.create(config)
.globalConfig(builder -> {})
.packageConfig(builder -> {})
.strategyConfig(builder -> {
// 自定义字段
List<TableField> customFields = new ArrayList<>();
builder.addInclude(tableName)
// 增加自定义字段
.customFields(customFields);
})
.injectionConfig(biConsumer)
.templateEngine(new VelocityTemplateEngine())
.execute();
最初的想法
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class YgwGroupEo extends YgwGroupPo {
private static final long serialVersionUID = 3572637488573104659L;
private List<YgwRolePermissionPo> permissions;
}
是通过子类继承的形式来实现扩展,但MyBatis-Plus动态生成SQL时无法生成子类。
综合对比
要实现子类继承扩展也能生成SQL,得修改 TableInfoHelper.initTableInfo。工作量相当大,且稳定性未知。
通过生成器来生成符合现扩展模式,可以以最少工作量和可靠的稳定性。
以上是使用中遇到的情况
希望该项目越来,使用起来越来越方便,效率更高。
Comment From: qmdx
你这个自定义属性是非表字段属性?
Comment From: qmdx
未反馈