通过配置的形式加入实体类自定义属性,实现对实体类的扩展。

版本信息

​ 生成器版本: 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

未反馈