model structure field column data - jmr-source/doc GitHub Wiki

模型结构 - field、column、data(字段、列、字段数据)


目录


###例子位置:###

  • demo/model/model.jmr.xml 任务中的 model/column/column和model/data/data

阅读前需要了解的知识

模型


field、column、data的定位和关系

  • field:作为entity模型的字段,它的源是数据库表的字段、视图的字段,Java类的字段,用户也可以自己新定义field。
  • column:field的共有属性,比如id、name、type等称为column,所有field都包含这些column属性。
  • data:field的私有属性,和column区别是,column是所有field都有的属性,而data只属于某个field。

field、column、data在实际开发中的定位:

  • field:字段本身,每个Entity都有一组field集合。
  • column:field的共有属性,比如field.name、field.type。下图column圈起来部分(橙色)就遍历field集合,得到每个field.name。
  • data:field私有数据,比如name为type这个field,它定义了一组data数据用来生成下拉框(select),这是它独有的数据。

field、column、data的增删改、映射转换、预设

以下是模型界面的信息,配合这张图说明。

field的增删改、映射转换、预设

新增field

在1和5处点击可以新增加字段,或者鼠标右键点击新增,在此处填入新字段名price。

生成新字段price,可以看出,如果字段是新增的,图标颜色是绿色。

也可以通过预设生成字段,预设可以在模型转换(生成)时,就添加字段,详细方式请阅读预设字段Field

删除field

在2处点击选中字段可以删除,或者选中字段鼠标右键删除,所有字段都可以删除。

上移field

在3处点击选中字段可以上移字段,或者选中字段鼠标向上,使用for标签的时候将改变字段的遍历顺序。

下移field

在4处点击选中字段可以下移字段,或者选中字段鼠标向下,使用for标签的时候将改变字段的遍历顺序。

修改field

除了id列不能修改外,其它所有字段的内容都可以修改。选中需要修改的内容,点击可以修改内容。

String类型:可以选择null也可以输入任意字符串。

Boolean类型:可以选择null、true、false中任意一项。

Select类型:可以选择null或者其他设定好的选项。

映射转换字段

  • 映射:数据库类型和实际开发语言的类型不一样,需要一一对应。type和fullType列可以通过映射的方式赋值。可以通过点击完成映射。关于映射的操作方法请阅读:在模型中使用映射

映射后的值

  • 转换:用某个列的值作为原值,按照一定规则生成新值叫做转换。比如id的值是数据库字段名,而name我们想作为Java类的属性名。id为regist_time,那么name为registTime。可以通过点击完成转换。关于转换的操作方法请阅读:字段转换

转换后的值

预设字段

在实际的开发中,我们需要修改模型的内容,但都需要手动去做,有没有什么方法可以在模型转化(生成)的时候就设定好了呢?答案是有,那就是通过预设方案设定好。字段通过预设,可以省去大部分修改模型的时间,关于字段预设请阅读字段转换

column的增删改、映射转换、预设

在实际开发中,单靠一个原始的模型的数据,是没法完全满足我们业务需求的。比如我们需要生成字段在界面上的名称fieldName(可能为英文也可能为中文),每个字段对应的控件类型(比如text、select、date),字段是否作为查询项isQuery。这就需要新增列来扩展字段的属性。

isQuery是字段是否要查询的标识

新增列column

在6处点击新增列,新增列有3种类型String、Boolean和Select

String:字符串类型,可为null或者填写默认值。

可以看到,新生成了列fieldName。

Boolean:布尔类型,可为null或者选择true或false。

可以看到,新生成了列isQuery,值是true。

Select:多选类型,可以null,必须自己添加可选项,新列名为controlType(控件类型),在下面的表格可以添加选项,我们添加了3种控件类型text、select、date,默认选项为text。

可以看到,新生成了列isQuery,默认值是text。

删除column

在8处可以删除列,只有新设的列才可以删除。

修改column

和修改field一样,点击修改。

String类型修改

Boolean类型修改

Select类型修改

转换column

  • 转换:同field的转换一样,用某个列的值作为原值,按照一定规则生成新值叫做转换。比如id的值是数据库字段名,而fieldName我们想作为界面的属性名。id为regist_time,那么转成fieldName应该为registTime。可以通过点击完成转换。关于转换的操作方法请阅读:字段转换

转换后的值

预设column

同预设field一样,在实际的开发中,我们需要修改模型的内容,但都需要手动去做,有没有什么方法可以在模型转化(生成)的时候就设定好了呢?答案是有,那就是通过预设方案设定好。字段通过预设,可以省去大部分修改模型的时间,关于字段预设请阅读字段转换

data的增删改

新增data

点击添加。

data有2个属性name和value。

删除data

选中data项,鼠标右键删除。

修改data

选中data项,鼠标右键修改。

field、column、data的应用

模型数据

  • controlType:控件类型,id、name为text控件,type为select控件,regist_time为date控件。
  • fieldName:界面的名称,id为id,name为name,type为type,regist_time为registTime。

任务中选择模型

模板中选择模型(代码提示用)

选中relation的值是one。

field的应用

通过遍历field生成一个查询界面。

object是entity,使用for标签遍历object.fields这个集合,在for标签中使用get获取field的属性。

运行结果

此处例子是一个简化版的查询界面,在实战中完整的例子请阅读:查询界面生成

小贴士:代码提示可以找到需要的属性。

小贴士:选中或者鼠标悬浮可以看到对应数据。

column的应用

通过遍历field生成一个新增页面

通过遍历field,field.property("fieldName")为字段在界面的名称,field.property("controlType")方法判断控件的类型,根据类型生成不同类型的控件。

运行结果,根据

此处例子是一个简化版的新增界面,在实战中完整的例子请阅读: 新增界面生成

小贴士:选中或者鼠标悬浮可以看到判断是否成立。

data的应用

type字段的data数据。

在新增页面中,type是一个包含选项的下拉框。

在之间的基础上,select控件的option中,value属性是data.value,标签值是data.name

运行结果,根据

此处例子是一个简化版的新增界面,在实战中完整的例子请阅读: 新增界面生成

小贴士:选中或者鼠标悬浮到data上可以看到数据。

⚠️ **GitHub.com Fallback** ⚠️