多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 5.1.14\. properties `&lt;properties&gt;` 元素允许定义一个命名的逻辑分组(grouping)包含一个类中的多个属性。 这个元素最重要的用处是允许多个属性的组合作为`property-ref`的目标(target)。 这也是定义多字段唯一约束的一种方便途径。 ``` <properties name="logicalName" insert="true|false" update="true|false" optimistic-lock="true|false" unique="true|false" > <property ...../> <many-to-one .... /> ........ </properties> ``` | ![1](img/1.png) | `name`: 分组的逻辑名称 - _不是_ 实际属性的名称. | |:--- |:--- | | ![2](img/2.png) | `insert`: 被映射的字段是否出现在SQL的 `INSERT`语句中? | | ![3](img/3.png) | `update`: 被映射的字段是否出现在SQL的 `UPDATE`语句中? | | ![4](img/4.png) | `optimistic-lock` (可选 - 默认是 `true`):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version) | | ![5](img/5.png) | `unique` (可选 - 默认是 `false`):表明组件映射的所有字段上都有唯一性约束 | 例如,如果我们有如下的`&lt;properties&gt;`映射: ``` <class name="Person"> <id name="personNumber"/> ... <properties name="name" unique="true" update="false"> <property name="firstName"/> <property name="initial"/> <property name="lastName"/> </properties> </class> ``` 然后,我们可能有一些遗留的数据关联,引用 `Person`表的这个唯一键,而不是主键。 ``` <many-to-one name="person" class="Person" property-ref="name"> <column name="firstName"/> <column name="initial"/> <column name="lastName"/> </many-to-one> ``` 我们并不推荐这样使用,除非在映射遗留数据的情况下。