5.3.8 TableMapping 和 FieldMapping

ATableMapping描述了应用程序中的域对象到数据库中存储的表的映射。默认表映射是将表中的每一列映射到同名字段的映射。

TableMapping = {
  String table                  :  "" ,
  String database               :  "" ,
  boolean mapAllColumns         : true,
  Array fields                  : null
};

和成员分别是表名和数据库名 table。,如果为 true, 则为 中未列出的所有列创建一个默认值,以便所有未显式映射的列都被赋予到同名字段的默认映射。 包含一组对象;这也可以是单个. datamapAllColumnsFieldMappingfieldsfieldsFieldMappingFieldMapping

AFieldMapping描述域对象中的单个字段。该对象没有公共构造函数;您可以使用创建 FieldMapping TableMapping.mapField(),也 FieldMapping可以使用直接在TableMapping构造函数中使用的文字。

FieldMapping = {
  String fieldName     :  "" ,
  String columnName    :  "" ,
  Boolean persistent    : true,
  Converter converter     : null
};

fieldNamecolumnName 分别是域对象中字段的名称和存储该字段的列的名称。如果 persistent为 true(默认值),则该字段存储在数据库中。converter 指定一个 Converter 类(如果有)与此字段一起使用(默认为 null)。};

构造TableMapping函数可以采用表的名称(可能用数据库名称限定)或TableMapping文字。

TableMapping mapField(String fieldName, [String columnName], [Converter converter], [Boolean persistent])

为映射对象的命名字段创建字段映射。唯一的强制参数是fieldName,它提供了 JavaScript 应用程序对象中字段的名称。其余参数是可选的,可以以任何顺序出现。返回cyrrentTableMapping对象。

columnName指定映射到此对象字段的数据库列的名称。如果省略, columnName默认为与相同的值fieldName。A converter可用于提供 Converter 在 JavaScript 和数据库数据类型之间执行自定义转换的类。默认值为空。 persistent指定字段是否持久化到数据库,默认为true。

重要的

如果persistent为假,则 不能使用 columnName和 参数。converter

TableMapping applyToClass(Function constuctor)

将 a 附加TableMapping到 a constructor以映射对象。完成此操作后,从构造函数创建的任何对象都将有资格作为映射实例,可以使用多种形式的相关 SessionBatch 方法。

例如,应用程序可以构造一个仅部分完成的实例,然后使用 Session.load() 数据库中的所有映射字段填充它。应用程序修改实例后, Session.save() 将其保存回来。同样, Session.find() 可以采用映射的构造函数,根据键检索对象,然后使用构造函数创建成熟的域对象。