1. 基本功能 1. 基本功能
1.1. 表定义 1.1. 表定义
表定义可以建立一张表,然后给这张表新增字段,新增表约束以及表索引。可以选择表生成数据库建表脚本,直接在数据库是使用这些语句建表。
1.2. 支持分片字段 1.2. 支持分片字段
平台支持配置分片字段,配置完后,对应的mapper文件中对应更新的操作中不会有对应的字段:
1.3.数据类型的丰富化配置 1.3.数据类型的丰富化配置
此文档是针对mysql数据库,业务对象生成的代码中,不同类型的实体代码有差异。
1.4. oracle字符长度设置 1.4. oracle字符长度设置
支持对oracle数据库的中文指定占字符长度。
2. 配置方法 2. 配置方法
2.1. 表定义 2.1. 表定义
IS_DELETED
字段,如果是版本控制表,会加上版本控制的字段,比如BASE_VIEW_ID
、CONFIG_ITEM_CODE
等。
配置
- 数据建模–数据结构–表定义:点击【新增】按钮,在新增表定义页面上填写【表名】,【表类型】选择普通表(根据需求选择),【表注释】即表中文描述,输入完点击【保存】按钮,子表的表字段会多出系统默认字段,这里的系统字段支持自定义,可参考公共字段配置。
- 新增表字段有3种方式:方式一是直接新增字段;方式二是如果用户已经有做了界面原型,可直接选择界面原型中的字段,默认推荐生成一份表结构;方式三则针对项目还没有设计表结构时,可以从平台导出一份模板提供给表设计人员,后续可以直接使用模板导入到平台。
2.1. 方式一:点击【新增】按钮,如果字段在数据元素代码中已经存在,可直接选择对应数据元素代码并带出【字段名】、【字段标题】,【字段长度】等信息;如果没有就直接填写【字段名】,【字段标题】,【字段长度】,【数据类型】,选择是否【非空】是否【key】,如果是MySQL数据库,还需要填写【数据库类型】。
2.2. 方式二:点击【生成表字段】按钮,弹出【选择页面原型字段】。
在左侧选中对应的页面原型,在右侧选择字段,然后点击【确认】按钮。
系统会推荐出一份默认的字段名及对应的标题、长度、类型等信息。
2.3. 方式三:点击【导入模板下载】按钮,可以导出一份空白的EXCEL模板文件。
接着在EXCEL文件上设计数据库表字段。然后点击【导入字段】将字段导入到平台中。
- 新增完表字段,可以继续增加表约束和表索引,也可以直接跳过,保存表数据。如果要增加表约束,点击切换到【表约束】tab页,新增一笔数据,填写【约束名称】,【约束类型】,【字段名称】,【引用字段名】和【引用表名】信息,再新增孙表一笔数据,填写约束【字段名称】,然后点击保存。
如果要新建表索引,点击切换到【表索引】,填写【索引名称】和【索引类型】并保存。
- 新增完数据后保存并提交,此时可以选择该表去生成数据库脚本到目标数据库去执行。
- 如果是在平台上新增的字段,需要导出EXCEL文件则可以到表字段中点击【导出字段】将字段导出。可以勾选字段导出也可以导出所有字段。
2.2.支持分片字段配置 2.2.支持分片字段配置
配置了全局和表级,两个配置是共同起作用的。例如,视图级配置了A字段,表级配置了B字段。则此对象上的A和B都是分片字段。
配置
- 分片字段为所有表中的相同字段,此时可以选择视图级配置。如果每个表的分片字段是不同的,可以直接参考步骤2。打开项目管理–项目初始化–视图级配置,点击新增记录,进入新增页。配置项类型为【分片键配置】,配置内容为具体字段。如果是多个字段,可以按照逗号隔开。返回视图级配置页面,勾选新增的记录然后点击【批量提交】按钮提交。
- 如果每个表的分片字段是不同的,此时可以在表定义上的字段上进行单独字段配置,勾选是否【分片键】。
2.3.数据类型的丰富化 2.3.数据类型的丰富化
配置
- 数据建模-数据结构–数据元素:新增数据元素,根据具体需求挑选对应的数据类型。
- 如果是通过表定义中【导入字段】导入字段,则导入的时候会根据数据库类型对应的转换为相应的数据库
根据创建的表结构创建对应的业务对象,生成代码。此处不做具体的配置说明。具体可以参考经典案例向导
代码
- 以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字符长度校验
配置
- 在项目组的config.property.js中validation位置,新增chineseWidth:3;
validation: {
chineseWidth:3,//在数据库中一个中文占用多少字节
fieldErrorsTransformer: undefined,
verifyOnSubmit:false, //校验只在调用verify方法时候才进行校验,其他时候不校验。
showTabValidationMsg:false, //是否弹出提示Tab校验
beforeSaveHintModMsg:false //保存之前是否提示未修改提示
}