表定义

1. 基本功能 1. 基本功能

1.1. 表定义 1.1. 表定义

表定义可以建立一张表,然后给这张表新增字段,新增表约束以及表索引。可以选择表生成数据库建表脚本,直接在数据库是使用这些语句建表。

1.2. 支持分片字段 1.2. 支持分片字段

平台支持配置分片字段,配置完后,对应的mapper文件中对应更新的操作中不会有对应的字段:

  • updateByPrimaryKeySelective方法不在生成对应的更新字段;
  • updateByExample方法不在生成对应的更新字段;
  • updateByExampleSelective方法不在生成对应的更新字段;
  • updateByPrimary方法不在生成对应的更新字段;
  • 1.3.数据类型的丰富化配置 1.3.数据类型的丰富化配置

    此文档是针对mysql数据库,业务对象生成的代码中,不同类型的实体代码有差异。

    1.4. oracle字符长度设置 1.4. oracle字符长度设置

    支持对oracle数据库的中文指定占字符长度。

    2. 配置方法 2. 配置方法

    2.1. 表定义 2.1. 表定义

  • 表类型有普通表、逻辑删除表和版本控制表,如果是逻辑删除表,在新增表字段的时候会默认加上IS_DELETED字段,如果是版本控制表,会加上版本控制的字段,比如BASE_VIEW_IDCONFIG_ITEM_CODE等。
  • 表名的命名由大写英文、下划线及数字组成,且下划线之间要使用2个或2个以上字母来命名。表字段名的命名规范一致
  • 如果是直接从数据库导入的字段需要注意数据库中描述不能包含特殊字符。
  • 配置

    1. 数据建模–数据结构–表定义:点击【新增】按钮,在新增表定义页面上填写【表名】,【表类型】选择普通表(根据需求选择),【表注释】即表中文描述,输入完点击【保存】按钮,子表的表字段会多出系统默认字段,这里的系统字段支持自定义,可参考公共字段配置
      公用字段
    2. 新增表字段有3种方式:方式一是直接新增字段;方式二是如果用户已经有做了界面原型,可直接选择界面原型中的字段,默认推荐生成一份表结构;方式三则针对项目还没有设计表结构时,可以从平台导出一份模板提供给表设计人员,后续可以直接使用模板导入到平台。
      2.1. 方式一:点击【新增】按钮,如果字段在数据元素代码中已经存在,可直接选择对应数据元素代码并带出【字段名】、【字段标题】,【字段长度】等信息;如果没有就直接填写【字段名】,【字段标题】,【字段长度】,【数据类型】,选择是否【非空】是否【key】,如果是MySQL数据库,还需要填写【数据库类型】。
      QQ截图20191010101906
      2.2. 方式二:点击【生成表字段】按钮,弹出【选择页面原型字段】。
      QQ截图20191010102313
      在左侧选中对应的页面原型,在右侧选择字段,然后点击【确认】按钮。
      QQ截图20191010102417
      系统会推荐出一份默认的字段名及对应的标题、长度、类型等信息。
      QQ截图20191010102705
      2.3. 方式三:点击【导入模板下载】按钮,可以导出一份空白的EXCEL模板文件。
      导入模板下载
      接着在EXCEL文件上设计数据库表字段。然后点击【导入字段】将字段导入到平台中。
      导入字段
    3. 新增完表字段,可以继续增加表约束和表索引,也可以直接跳过,保存表数据。如果要增加表约束,点击切换到【表约束】tab页,新增一笔数据,填写【约束名称】,【约束类型】,【字段名称】,【引用字段名】和【引用表名】信息,再新增孙表一笔数据,填写约束【字段名称】,然后点击保存。
      QQ截图20191010103720
      如果要新建表索引,点击切换到【表索引】,填写【索引名称】和【索引类型】并保存。
      QQ截图20191010104316
    4. 新增完数据后保存并提交,此时可以选择该表去生成数据库脚本到目标数据库去执行。
      QQ截图20191010103039
    5. 如果是在平台上新增的字段,需要导出EXCEL文件则可以到表字段中点击【导出字段】将字段导出。可以勾选字段导出也可以导出所有字段。
      导出字段

    2.2.支持分片字段配置 2.2.支持分片字段配置

    配置了全局和表级,两个配置是共同起作用的。例如,视图级配置了A字段,表级配置了B字段。则此对象上的A和B都是分片字段。

    配置

    1. 分片字段为所有表中的相同字段,此时可以选择视图级配置。如果每个表的分片字段是不同的,可以直接参考步骤2。打开项目管理–项目初始化–视图级配置,点击新增记录,进入新增页。配置项类型为【分片键配置】,配置内容为具体字段。如果是多个字段,可以按照逗号隔开。返回视图级配置页面,勾选新增的记录然后点击【批量提交】按钮提交。
      图片1
    2. 如果每个表的分片字段是不同的,此时可以在表定义上的字段上进行单独字段配置,勾选是否【分片键】。
      图片2

    2.3.数据类型的丰富化 2.3.数据类型的丰富化

    配置

    1. 数据建模-数据结构–数据元素:新增数据元素,根据具体需求挑选对应的数据类型。
      数据库类型丰富化-配置
    2. 如果是通过表定义中【导入字段】导入字段,则导入的时候会根据数据库类型对应的转换为相应的数据库
      数据库类型丰富化-配置
      根据创建的表结构创建对应的业务对象,生成代码。此处不做具体的配置说明。具体可以参考经典案例向导

    代码

    1. 以bigint、bit、char、date、datetime、decimal、int、integer、mediumint、numeric、time、timestamp、smallint、tinyint、varchar这几种类型的代码为例。
    //fields
        /** 字段bigint类型 */
        @Column(name="BIGINT_COLUMN",nullable = true,precision=19,scale=0,length=19)
        @JsonSerialize(using=Long2String.class)
        private Long bigintColumn;
    
        /** 字段bit类型 */
        @Column(name="BIT_COLUM",nullable = true,length=1)
        private Boolean bitColum;
    
        /** 字段char类型 */
        @Column(name="CHAR_COLUMN",nullable = true,length=255)
        @RichLength(max=255,min=0,groups={TestCaseNewHot111.Default.class})
        private String charColumn;
    
        /** 货主代码 */
        @Column(name="CUST_CODE",nullable = true,length=50)
        @RichLength(max=50,min=0,groups={TestCaseNewHot111.Default.class})
        private String custCode;
    
        /** 货主名称 */
        @Column(name="CUST_NAME",nullable = true,length=200)
        @RichLength(max=200,min=0,groups={TestCaseNewHot111.Default.class})
        private String custName;
    
        /** 字段date类型 */
        @Column(name="DATE_COLUMN",nullable = true,length=0)
        @DateType
        private Date dateColumn;
    
        /** 字段datetime类型 */
        @Column(name="DATETIME_COLUMN",nullable = true,length=0)
        @DateTime
        private Date datetimeColumn;
    
        /** 字段decimal类型 */
        @Column(name="DECIMAL_COLUMN",nullable = true,precision=10,scale=0,length=10)
        private BigDecimal decimalColumn;
    
        /** 字段int类型 */
        @Column(name="INT_COLUMN",nullable = true,length=10)
        private Integer intColumn;
    
        /** 字段integer类型 */
        @Column(name="INTEGER_COLUMN",nullable = true,length=10)
        private Integer integerColumn;
    
        /** 商品编码 */
        @Column(name="ITEM_CODE",nullable = true,length=50)
        @RichLength(max=50,min=0,groups={TestCaseNewHot111.Default.class})
        private String itemCode;
    
        /** 商品颜色 */
        @Column(name="ITEM_COLOR",nullable = true,length=50)
        @RichLength(max=50,min=0,groups={TestCaseNewHot111.Default.class})
        private String itemColor;
    
        /** 高 */
        @Column(name="ITEM_HEIGHT",nullable = true,precision=18,scale=3,length=18)
        private BigDecimal itemHeight;
    
        /** 长 */
        @Column(name="ITEM_LENGTH",nullable = true,precision=18,scale=3,length=18)
        private BigDecimal itemLength;
    
        /** 商品名称 */
        @Column(name="ITEM_NAME",nullable = true,length=200)
        @RichLength(max=200,min=0,groups={TestCaseNewHot111.Default.class})
        private String itemName;
    
        /** 最小换算单位代码 */
        @Column(name="ITEM_UOM",nullable = true,length=50)
        @RichLength(max=50,min=0,groups={TestCaseNewHot111.Default.class})
        private String itemUom;
    
        /** 宽 */
        @Column(name="ITEM_WIDTH",nullable = true,precision=50,scale=3,length=50)
        private BigDecimal itemWidth;
    
        /** 字段mediumint字段 */
        @Column(name="MEDIUMINT_COLUMN",nullable = true,length=0)
        private String mediumintColumn;
    
        /** 字段numeric类型 */
        @Column(name="NUMERIC_COLUMN",nullable = true,precision=10,scale=0,length=10)
        private BigDecimal numericColumn;
    
        /** 字段smallint类型 */
        @Column(name="SMALLINT_COLUMN",nullable = true,length=5)
        private Short smallintColumn;
    
        /** 货品ID */
        @Id
        @GeneratedValue(generator = "idGenerator")
        @Generator("snowFlakeGenerator")
        @JsonSerialize(using=Long2String.class)
        @Column(name="TEST_CASE_111_ID",nullable = false,length=19,precision=19,scale=0)
        private Long testCase111Id;
    
        /** 字段time类型 */
        @Column(name="TIME_COLUMN",nullable = true,length=0)
        private String timeColumn;
    
        /** 字段timestamp类型 */
        @Column(name="TIMESTAMP_COLUMN",nullable = true,length=0)
        @DateTime
        private Date timestampColumn;
    
        /** 字段tinyint类型 */
        @Column(name="TINYINT_COLUMN",nullable = true,length=3)
        private Short tinyintColumn;
    
        /** 字段varchar类型 */
        @Column(name="VARCHAR_COLUMN",nullable = true,length=255)
        @RichLength(max=255,min=0,groups={TestCaseNewHot111.Default.class})
        private String varcharColumn;
    

    2.4. oracle字符长度校验 2.4. oracle字符长度校验

    配置

    1. 在项目组的config.property.js中validation位置,新增chineseWidth:3;
    validation: {
                  chineseWidth:3,//在数据库中一个中文占用多少字节
                fieldErrorsTransformer: undefined,
                verifyOnSubmit:false, //校验只在调用verify方法时候才进行校验,其他时候不校验。
                showTabValidationMsg:false, //是否弹出提示Tab校验
                beforeSaveHintModMsg:false //保存之前是否提示未修改提示
            }
    

    3.常用扩展 3.常用扩展

    4.版本更新 4.版本更新

    7.4.1,2021.03.12

    优化

  • 表定义【导入字段】按钮导入的字段的数据元素编码匹配时候需要过滤引用的数据元素。
  • 表字段中的【导入字段】按钮导入的字段的数据元素编码匹配时候需要过滤引用的数据元素。
  • 表定义中【生成数据库脚本】功能针对引用的表需要提示。
  • 表定义中【同步系统公共字段】功能针对引用的表需要提示。
  • 表字段的数据元素编码联想控件需要过滤引用的配置数据。
  • 6.1.6,

    新特性

  • 表字段支持导入字段。
  • 5.7.0,

    优化

  • 数据建模-数据结构-表定义:点击查询按钮,查看一张表数据,表字段要加载10秒左右,请注意内外网访问的情况下都要优化。
  • 新特性

  • 推荐需求:1)平台可以根据表的中文字段名称提供一份推荐的字段名;2)根据选择页面原型,勾选字段名称,可生成一份推荐的字段名,实现快速建立表结构
  • 5.5.B

    优化

  • 1.导出的sql语句创建人不对 【改进】
  • 2.云平台导出脚本在部分工具(navicat premium)下无法执行保存,建议增加delimiter改变分隔符(判断mysql数据库)【改进】
  • 5.5.0,2019.05.10

    优化

  • 表定义上的所有子表需要改成表格内编辑【改进】
  • 新特性

  • mysql数据类型的丰富化
  • 表定义中没有设置主键,提交的时候需要提示。
  • 5.4.J

    新特性

  • 1.支持分片字段配置