1.对类添加JavaDoc注释
Language->Edit Current Object Language...
Java::Profile/Class/Templates/javaDoc修改代码如下:
[%ActualComment%/n/n]/
[%@since%/n]/
[%@deprecated%/n]/
[%@author%/n]/
[%@version%/n]/
[%@see%/n]/
.if (%GenOptions.GenerateOID%)
[@pdOid %.L:ObjectID%/n]/
.endif
[%@misc%/n]/
[%Name%]
2.对本类属性添加注释
Language->Edit Current Object Language...
Java::Profile/Classifier/Templates/attributes修改代码如下:
.foreach_item(Attributes)
.if ((%@1% == all) or (%Visibility% == %@1%)) and (%Derived% == false)
.if (%isRoleAMigrated%)
[%MigratedAssociation.roleAMigrateDefinition%/n]
.elsif (%isRoleBMigrated%)
[%MigratedAssociation.roleBMigrateDefinition%/n]
.else
//[%Name%]
[%definition%/n]
.endif
.endif
.next
3.对相关联类添加注释
Language->Edit Current Object Language...
Java::Profile/Association/Templates/roleAMigrateFromAssoc修改代码如下:
.// Migrate from an association
.if (%RoleANavigability%)
.set_value(_attributeCode, %roleACode%, new)
.set_object(_association, , new)
.set_object(_class, ClassB, new)
.set_value(_migrateAttributeCode, false, new)
.if (%hasAttribute% == false)
//[%ClassA.Name%]
%roleAMigrateDefinition%
.endif(/n)
.endif
Language->Edit Current Object Language...
Java::Profile/Association/Templates/roleBMigrateFromAssoc修改代码如下:
.// Migrate from an association
.if (%RoleBNavigability%)
.set_value(_attributeCode, %roleBCode%, new)
.set_object(_association, , new)
.set_object(_class, ClassA, new)
.set_value(_migrateAttributeCode, false, new)
.if (%hasAttribute% == false)
//[%ClassB.Name%]
%roleBMigrateDefinition%
.endif(/n)
.endif
4.在Iterator后加入泛型
Language->Edit Current Object Language...
Java::Profile/Association/Templates/Helpers/Migrate/accessorsMany修改代码如下:
.if (%implInterface%)
.// Get collection
.set_value(_operationName, get%.FU:roleName%, new)
.set_value(_operationSignature, get%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default getter */
public %implInterface% %_operationName%() /
{
if (%_memberName% == null)
%_memberName% = new %implClass%();
return %_memberName%;
}
.endif(/n/n)
.// Get iterator
.set_value(_operationName, getIterator%.FU:roleName%, new)
.set_value(_operationSignature, getIterator%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default iterator getter */
public java.util.Iterator<%Classifier.qualifiedCode%> %_operationName%() /
{
if (%_memberName% == null)
%_memberName% = new %implClass%();
return %_memberName%.iterator();
}
.endif(/n/n)
.// Set collection
.set_value(_operationName, set%.FU:roleName%, new)
.set_value(_operationSignature, set%.FU:roleName%@%implInterface%, new)
.set_value(_paramName, new%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default setter
* @param %_paramName% */
public void %_operationName%(%implInterface% %_paramName%) /
{
removeAll%.FU:roleName%();
for (java.util.Iterator<%Classifier.qualifiedCode%> iter = %_paramName%.iterator(); iter.hasNext();)
add%.FU:roleName%((%Classifier.qualifiedCode%)iter.next());
}
.endif(/n/n)
.// Add object
.set_value(_operationName, add%.FU:roleName%, new)
.set_value(_operationSignature, add%.FU:roleName%@%Classifier.qualifiedCode%, new)
.set_value(_paramName, new%.FU:Classifier.Code%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default add
* @param %_paramName% */
public void %_operationName%(%Classifier.qualifiedCode% %_paramName%) /
{
if (%_paramName% == null)
return;
if (this.%_memberName% == null)
this.%_memberName% = new %implClass%();
if (!this.%_memberName%.contains(%_paramName%))/n
.if (%endNavigability%) and (%endMultiple% == false)
{
this.%_memberName%.add(%_paramName%);
%_paramName%.set%.FU:endRoleName%(this);
}
.elsif (%endNavigability%) and (%endMultiple%) and (%endClassHasImplementation%)
{
this.%_memberName%.add(%_paramName%);
%_paramName%.add%.FU:endRoleName%(this);
}
.else
this.%_memberName%.add(%_paramName%);
.endif(/n)
}
.endif(/n/n)
.// Remove object
.set_value(_operationName, remove%.FU:roleName%, new)
.set_value(_operationSignature, remove%.FU:roleName%@%Classifier.qualifiedCode%, new)
.set_value(_paramName, old%.FU:Classifier.Code%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default remove
* @param %_paramName% */
public void %_operationName%(%Classifier.qualifiedCode% %_paramName%) /
{
if (%_paramName% == null)
return;
if (this.%_memberName% != null)
if (this.%_memberName%.contains(%_paramName%))/n
.if (%endNavigability%) and (%endMultiple% == false)
{
this.%_memberName%.remove(%_paramName%);
%_paramName%.set%.FU:endRoleName%((%EndClassifier.qualifiedCode%)null);
}
.elsif (%endNavigability%) and (%endMultiple%) and (%endClassHasImplementation%)
{
this.%_memberName%.remove(%_paramName%);
%_paramName%.remove%.FU:endRoleName%(this);
}
.else
this.%_memberName%.remove(%_paramName%);
.endif(/n)
}
.endif(/n/n)
.// Remove all objects
.set_value(_operationName, removeAll%.FU:roleName%, new)
.set_value(_operationSignature, removeAll%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.set_value(_tempObjName, old%.FU:Classifier.Code%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default removeAll */
public void %_operationName%() /
{
if (%_memberName% != null)/n
.if (%endNavigability%) and (%endMultiple% == false)
{
%Classifier.qualifiedCode% %_tempObjName%;
for (java.util.Iterator<%Classifier.qualifiedCode%> iter = getIterator%.FU:roleName%(); iter.hasNext();)
{
%_tempObjName% = (%Classifier.qualifiedCode%)iter.next();
iter.remove();
%_tempObjName%.set%.FU:endRoleName%((%EndClassifier.qualifiedCode%)null);
}
}
.elsif (%endNavigability%) and (%endMultiple%) and (%endClassHasImplementation%)
{
%Classifier.qualifiedCode% %_tempObjName%;
for (java.util.Iterator<%Classifier.qualifiedCode%> iter = getIterator%.FU:roleName%(); iter.hasNext();)
{
%_tempObjName% = (%Classifier.qualifiedCode%)iter.next();
iter.remove();
%_tempObjName%.remove%.FU:endRoleName%(this);
}
}
.else
%_memberName%.clear();
.endif(/n)
}
.endif(/n)
.else
.if (%isGenAssocDefaultAccessors%)
.// Default accessors
.// Get array
.set_value(_operationName, get%.FU:roleName%, new)
.set_value(_operationSignature, get%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default getter */
public %Classifier.qualifiedCode%/[/] %_operationName%() /
{
return %_memberName%;
}
.endif(/n/n)
.// Set array
.set_value(_operationName, set%.FU:roleName%, new)
.set_value(_operationSignature, set%.FU:roleName%@%Classifier.qualifiedCode%#, new)
.set_value(_paramName, new%.FU:roleName%, new)
.set_value(_memberName, %roleName%, new)
.if (%endClassHasOperation% == false)
/** @pdGenerated default setter
* @param %_paramName% */
public void %_operationName%(%Classifier.qualifiedCode%/[/] %_paramName%) /
{
this.%_memberName% = %_paramName%;
}
.endif(/n/n)
.endif
.endif
5.去除pdOid注释
Java::Generation/Options/GenerateOID,Value值设置为No
分享到:
相关推荐
生成JAVA代码 最后,我们执行JAVA代码的生成操作: - **点击工具栏:“Language”>“Generate Java Code”**:弹出代码生成面板。 - **勾选“Check model”**:激活模型检查功能,可以检测类图中存在的语法问题,...
在这个过程中,我们将重点讨论如何配置 Powerdesigner 以支持 Eclipse 和 Hibernate,并生成数据库和 Java 代码。 首先,我们需要了解如何使用 Powerdesigner 创建数据库模型,即 Object-Oriented Model (OOM)。在 ...
2. **代码生成**:基于UML模型,PowerDesigner可以生成Hibernate持久化类(POJOs)、映射文件(.hbm.xml)和配置文件(.cfg.xml)。这一过程遵循一定的规则,例如子类的映射信息通常被挂载在根类的映射文件下,而非...
PowerDesigner 与XML建模
### PowerDesigner在《Java程序设计》中的应用 #### 摘要 在当前教育背景下,《Java程序设计》作为计算机科学领域的重要组成部分,不仅承载着理论知识的教学任务,更需要注重培养学生实际操作能力和解决复杂问题的...
6. **代码生成**:可生成应用程序的源代码,如Java、C#等。 ### 三、模型操作 - **实体(Entity)**:表示业务对象,如用户、订单等,具有属性(Attribute)和关系(Relationship)。 - **属性(Attribute)**:...
代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis.xml *该工具目前支持3种数据源的生成方式,分别是:JDBC、.table、PDM *JDBC:选择JDBC是只...
PowerDesigner支持自动生成数据库访问层代码,逆向工程后的模型可以直接用于生成符合特定编程语言的DAO层代码。 综上所述,PowerDesigner逆向工程是一个强大且实用的功能,对于数据库开发者和管理员来说,它能够...
PowerDesigner 反向数据库结构生成 ER 图 PowerDesigner 是一个功能强大且灵活的数据建模工具,可以对数据库进行反向工程,生成 ER 图。本文档将指导您如何使用 PowerDesigner 反向数据库结构,生成 ER 图。 概念...
以自动生成Java实体类为例,我们可以编写一个插件,从PowerDesigner的模型中读取表结构,然后生成对应的Java Bean代码。这个过程中,我们需要解析模型中的对象,获取表名、字段名、数据类型等信息,再利用Java的模板...
此外,它还能根据数据模型生成数据库访问代码,例如Java的JDBC代码,加速开发进程。 五、性能分析 在物理数据模型阶段,PowerDesigner提供了性能分析器,可以模拟数据查询,预测数据库在实际运行中的性能,帮助优化...
OOM可以用于纯面向对象的设计,也可以生成Java文件或PowerBuilder文件;同时,OOM中的对象还可以转换为PDM中的元素,用于关系数据库的设计分析。 - **业务过程模型(BPM)**: 描述业务的不同任务和流程,以及它们之间...
#### 一、通过PowerDesigner生成Java源代码,并将其导入到Eclipse项目中 在本部分中,我们将探讨如何利用PowerDesigner为Eclipse项目生成Java源代码。这一过程分为几个步骤,从创建模型开始直至最终生成代码。 ###...
MyBatis Generator(MBG)是一个强大的工具,它可以自动从数据库中读取表信息,然后生成Java源代码,这些源代码包括了实体类、Mapper接口和XML配置文件,以及DAO实现类。这极大地减少了开发者的工作量,使他们能更...
PowerDesigner是一款强大的数据库建模工具,它也支持创建面向对象模型。面向对象模型是一种软件设计方法,通过...同时,通过源代码的生成,PowerDesigner能够将这些模型直接转化为可执行的代码,极大地提高了开发效率。
- **多语言支持**:能够根据OOM自动生成Java、PowerBuilder、XML、C++、Visual Basic等多种编程语言的源代码。 - **数据模型生成**:不仅能够生成概念数据模型(CDM)、物理数据模型(PDM),还能从OOM中生成相应的对象...
同时,它还支持生成数据库访问层的代码,适用于多种编程语言,如Java、C#等,加速应用程序的开发。 8. **版本控制与团队协作** PowerDesigner支持版本控制,可以与其他团队成员协同工作,跟踪和合并模型的变更,...
3. **正向工程**:根据设计的模型,PowerDesigner可以生成数据库脚本,创建实际的数据库结构。 4. **数据流建模**:除了数据库建模,它还支持业务过程建模,如数据流图(DFD),帮助分析和设计业务流程。 5. **...
7. **代码生成器(Code Generation)**:PowerDesigner可以自动生成数据库脚本、Java、C#等编程语言的源代码,大大提高了开发效率。 8. **变更管理(Change Management)**:在团队协作环境中,PowerDesigner的版本...