Java根据不同的页面设计,动态设计表的思路,页面上可以动态创建表的字段属性

       现在有业务需求,需要由页面上动态创建表单属性。比如,页面上创建用户模块,页面上可以手动添加用户名,字段类型,是否必填,是否需要字段验证等情况。

       目前想的是 创建一个表,动态添加字段,但是设计到字段的属性(必填,显示等)需要存储到另外一张表。现在没有一些好的方法和思路对于这种设计,想问下大家有没有好的思路。

        看过泛微的协同办公,他们就是动态创建表和字段,但是看不到人家的表结构设计,自己很想做个这样的设计,如果大家有思路或者有想法,可以和我一起做个开源东西出来呢

代码生成器,

@org.hibernate.annotations.Table注解可以自动创建表,像下面这样,
package com.snowball.base.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.Email;
 
@Data
@NoArgsConstructor
@Entity
@Table(name = "user")
@TableName("user")
@org.hibernate.annotations.Table(appliesTo = "user",comment = "用户表")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "用户表")
public class User extends BaseEntity{
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("姓名")
    @Column(columnDefinition = "varchar(50) comment'姓名'")
    private String realName;
}

设计到字段的属性(必填,显示等)需要存储可以存json格式

{

    name:"realname", // 变量名

    type:"String", // 类型

   isAnnotations:"true",是否验证

    annotations:"NotNull",// 这个验证比较复杂,需要详细设计,有@Email,@NotNull@NotBlank@NotEmpty等等

}