核心概念
在开始之前,需要理解 PowerDesigner 中的几个关键概念:

- CDM (Conceptual Data Model - 概念数据模型): 业务层面的数据模型,关注“实体”和“关系”,不涉及具体的技术实现。
- PDM (Physical Data Model - 物理数据模型): 技术层面的数据模型,是 CDM 的具体实现,包含了表、列、主键、外键、索引等数据库物理结构。我们通常直接使用 PDM 来生成 Java 代码。
- OOM (Object-Oriented Model - 面向对象模型): 一个 UML 模型,可以用来描述 Java 类、接口、它们之间的关系(继承、实现、关联等),PowerDesigner 可以将 PDM 映射到 OOM,然后再从 OOM 生成 Java 代码,这种两步法更灵活,但更复杂。
- Generation Templates (生成模板): PowerDesigner 使用模板来控制代码生成的具体格式和内容,你可以修改或创建自己的模板来自定义生成的代码风格(如使用 Lombok、JPA 注解等)。
本指南将重点介绍最常用、最直接的方法:从 PDM 直接生成 Java 代码。
第一步:准备工作
- 安装 PowerDesigner: 确保你已经安装了 PowerDesigner。
- 准备数据库: 你已经有一个设计好的数据库,或者一个包含表结构的 SQL 文件。
- (可选) 安装 JDK: 确保你的系统环境变量中配置了正确的 JDK,因为 PowerDesigner 在生成代码时会使用它。
第二步:创建或导入 PDM
你有两种方式可以得到 PDM:
方法 A:从现有数据库反向工程生成 PDM (最常用)
- 打开 PowerDesigner。
- 选择
File->New Model。 - 在弹出的窗口中,选择
Model types->Physical Data Model。 - 给模型命名(
MyApp_PDM),选择DBMS(MySQL 8.0),然后点击OK。 - 右键点击左侧的浏览器树,选择
Reverse Engineer->Database。 - 在数据源配置窗口中,选择
Using a data source或Using connection parameters。- Using a data source: 如果你已经在 ODBC 或 OLE DB 中配置了数据源,可以直接选择。
- Using connection parameters: 直接输入数据库连接信息(主机、端口、数据库名、用户名、密码)。
- 点击
OK,PowerDesigner 会连接到数据库并解析所有表、视图、索引等,生成 PDM,完成后,你将看到可视化的表结构图。
方法 B:从 SQL 文件导入生成 PDM
如果你的数据库结构以 SQL 文件(.sql)的形式存在:
- 创建一个新的 PDM(同方法 A 的第 1-4 步)。
- 右键点击左侧的浏览器树,选择
Import->Import SQL。 - 选择你的 SQL 文件。
- PowerDesigner 会尝试解析 SQL 文件并生成对应的 PDM。
第三步:配置生成目标 (Java)
在生成代码之前,需要告诉 PowerDesigner 你要生成什么。

- 在左侧的浏览器树中,右键点击你的 PDM 模型名称(
MyApp_PDM)。 - 选择
Generation Settings。 - 在
Generation标签页中:- 在
Target Model下拉菜单中,选择Java。 - 在
Target Language下拉菜单中,选择Java。 - 在
Diagram下拉菜单中,选择All Diagrams(生成所有表对应的代码)或选择特定图表。
- 在
- (可选但推荐) 点击
Format标签页,你可以在这里设置代码生成的一些基本格式,比如类名命名规则(%c代表类名,%n代表表名),你可以设置Class为%n,这样类名就和表名一样,但更常见的做法是在生成模板里进行更精细的控制。
第四步:配置并修改生成模板 (关键步骤)
这是决定你生成的 Java 代码样式的核心,默认模板可能不满足你的项目需求(比如你可能想用 JPA 2.0、Lombok、MyBatis 等)。
- 在
Generation Settings窗口中,点击Preview标签页。 - 在左侧的
Objects列表中选择一个你想修改的对象类型,Class(对应 Java 类)。 - 在右侧的
Template文本框中,你会看到生成类代码的模板脚本。你可以直接在这里修改,或者更好的方式是导出并编辑模板文件。
如何管理和修改模板
- 导出模板: 在
Preview界面,点击File->Export Template,将模板保存为一个.cat文件。 - 编辑模板: 用文本编辑器(如 VS Code, Notepad++)打开
.cat文件,你会看到类似 Velocity () 或 JSP (<%... %>) 的脚本语法,通过修改这些脚本,你可以完全控制生成的代码。 - 导入模板: 修改完成后,回到
Preview界面,点击File->Import Template,加载你修改过的模板。
常见的模板修改示例:
-
添加 Lombok 注解: 在
Class模板中,在类的声明前添加:#if ($attributes.has("lombok.entity")) @Data @NoArgsConstructor @AllArgsConstructor #end然后需要在 PDM 的表的
Extended Attributes中添加一个名为lombok.entity的属性并设为True。
(图片来源网络,侵删) -
使用 JPA 注解: 修改
Class模板,添加@Entity:@Entity public class $class$ { ... }修改
Attribute(属性)模板,添加@Column和@Id:#if ($attributes.has("jpa.id")) @Id #end @Column(name = "$column$") private $type$ $name$; -
自定义包名: 在
Generation标签页,可以设置Java Package为一个固定值(如com.example.app.entity),或者使用变量,$DBMS$.com.example.app.entity,这样不同数据库可以生成不同包。
第五步:生成 Java 代码
一切准备就绪,现在可以生成代码了。
- 在左侧的浏览器树中,右键点击你的 PDM 模型名称。
- 选择
Generate Java Code。 - 在弹出的窗口中:
- Directory: 选择一个输出目录,PowerDesigner 将会把生成的 Java 文件放在这里,建议创建一个新文件夹。
- File Type: 选择
.java。 - (可选) Select Objects: 如果你只想生成部分表的代码,可以在这里选择。
- 点击
OK。
PowerDesigner 开始生成代码,完成后你会在指定的目录下看到 .java 文件。
第六步:验证和优化
- 检查生成的代码: 打开生成的
.java文件,检查类名、属性名、数据类型映射是否正确。 - 类型映射: PowerDesigner 默认的类型映射可能不完全符合你的需求。
VARCHAR可能映射为String,DATETIME可能映射为java.sql.Timestamp,你可能希望它是java.time.LocalDateTime。- 如何修改映射:
- 在 PDM 中,右键点击一个表,选择
Edit Attributes/Columns。 - 选择一个列,在
Type下拉菜单旁边,点击 按钮。 - 在弹出的窗口中,你可以修改该列的
Java Type。 - 更通用的方法是修改 PDM 的
DBMS定义,在浏览器树中,展开DBMS->MySQL 8.0->Data Types,然后修改VARCHAR等类型的Java Type属性,这会影响整个模型。
- 在 PDM 中,右键点击一个表,选择
- 如何修改映射:
- 整合到项目: 将生成的代码文件复制到你的 Java 项目中,并根据需要进行微调,例如添加业务逻辑、构造方法、自定义查询等。
高级技巧:从 PDM 到 OOM 再到 Java
对于更复杂的面向对象设计,可以采用这个流程:
- 创建 PDM: 如前所述,从数据库生成
