杰瑞科技汇

PowerDesigner如何生成Java代码?

核心概念

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

PowerDesigner如何生成Java代码?-图1
(图片来源网络,侵删)
  1. CDM (Conceptual Data Model - 概念数据模型): 业务层面的数据模型,关注“实体”和“关系”,不涉及具体的技术实现。
  2. PDM (Physical Data Model - 物理数据模型): 技术层面的数据模型,是 CDM 的具体实现,包含了表、列、主键、外键、索引等数据库物理结构。我们通常直接使用 PDM 来生成 Java 代码
  3. OOM (Object-Oriented Model - 面向对象模型): 一个 UML 模型,可以用来描述 Java 类、接口、它们之间的关系(继承、实现、关联等),PowerDesigner 可以将 PDM 映射到 OOM,然后再从 OOM 生成 Java 代码,这种两步法更灵活,但更复杂。
  4. Generation Templates (生成模板): PowerDesigner 使用模板来控制代码生成的具体格式和内容,你可以修改或创建自己的模板来自定义生成的代码风格(如使用 Lombok、JPA 注解等)。

本指南将重点介绍最常用、最直接的方法:从 PDM 直接生成 Java 代码。


第一步:准备工作

  1. 安装 PowerDesigner: 确保你已经安装了 PowerDesigner。
  2. 准备数据库: 你已经有一个设计好的数据库,或者一个包含表结构的 SQL 文件。
  3. (可选) 安装 JDK: 确保你的系统环境变量中配置了正确的 JDK,因为 PowerDesigner 在生成代码时会使用它。

第二步:创建或导入 PDM

你有两种方式可以得到 PDM:

方法 A:从现有数据库反向工程生成 PDM (最常用)

  1. 打开 PowerDesigner。
  2. 选择 File -> New Model
  3. 在弹出的窗口中,选择 Model types -> Physical Data Model
  4. 给模型命名(MyApp_PDM),选择 DBMSMySQL 8.0),然后点击 OK
  5. 右键点击左侧的浏览器树,选择 Reverse Engineer -> Database
  6. 在数据源配置窗口中,选择 Using a data sourceUsing connection parameters
    • Using a data source: 如果你已经在 ODBC 或 OLE DB 中配置了数据源,可以直接选择。
    • Using connection parameters: 直接输入数据库连接信息(主机、端口、数据库名、用户名、密码)。
  7. 点击 OK,PowerDesigner 会连接到数据库并解析所有表、视图、索引等,生成 PDM,完成后,你将看到可视化的表结构图。

方法 B:从 SQL 文件导入生成 PDM

如果你的数据库结构以 SQL 文件(.sql)的形式存在:

  1. 创建一个新的 PDM(同方法 A 的第 1-4 步)。
  2. 右键点击左侧的浏览器树,选择 Import -> Import SQL
  3. 选择你的 SQL 文件。
  4. PowerDesigner 会尝试解析 SQL 文件并生成对应的 PDM。

第三步:配置生成目标 (Java)

在生成代码之前,需要告诉 PowerDesigner 你要生成什么。

PowerDesigner如何生成Java代码?-图2
(图片来源网络,侵删)
  1. 在左侧的浏览器树中,右键点击你的 PDM 模型名称(MyApp_PDM)。
  2. 选择 Generation Settings
  3. Generation 标签页中:
    • Target Model 下拉菜单中,选择 Java
    • Target Language 下拉菜单中,选择 Java
    • Diagram 下拉菜单中,选择 All Diagrams(生成所有表对应的代码)或选择特定图表。
  4. (可选但推荐) 点击 Format 标签页,你可以在这里设置代码生成的一些基本格式,比如类名命名规则(%c 代表类名,%n 代表表名),你可以设置 Class%n,这样类名就和表名一样,但更常见的做法是在生成模板里进行更精细的控制。

第四步:配置并修改生成模板 (关键步骤)

这是决定你生成的 Java 代码样式的核心,默认模板可能不满足你的项目需求(比如你可能想用 JPA 2.0、Lombok、MyBatis 等)。

  1. Generation Settings 窗口中,点击 Preview 标签页。
  2. 在左侧的 Objects 列表中选择一个你想修改的对象类型,Class(对应 Java 类)。
  3. 在右侧的 Template 文本框中,你会看到生成类代码的模板脚本。你可以直接在这里修改,或者更好的方式是导出并编辑模板文件。

如何管理和修改模板

  1. 导出模板: 在 Preview 界面,点击 File -> Export Template,将模板保存为一个 .cat 文件。
  2. 编辑模板: 用文本编辑器(如 VS Code, Notepad++)打开 .cat 文件,你会看到类似 Velocity () 或 JSP (<%... %>) 的脚本语法,通过修改这些脚本,你可以完全控制生成的代码。
  3. 导入模板: 修改完成后,回到 Preview 界面,点击 File -> Import Template,加载你修改过的模板。

常见的模板修改示例:

  • 添加 Lombok 注解: 在 Class 模板中,在类的声明前添加:

    #if ($attributes.has("lombok.entity"))
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    #end

    然后需要在 PDM 的表的 Extended Attributes 中添加一个名为 lombok.entity 的属性并设为 True

    PowerDesigner如何生成Java代码?-图3
    (图片来源网络,侵删)
  • 使用 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 代码

一切准备就绪,现在可以生成代码了。

  1. 在左侧的浏览器树中,右键点击你的 PDM 模型名称。
  2. 选择 Generate Java Code
  3. 在弹出的窗口中:
    • Directory: 选择一个输出目录,PowerDesigner 将会把生成的 Java 文件放在这里,建议创建一个新文件夹。
    • File Type: 选择 .java
    • (可选) Select Objects: 如果你只想生成部分表的代码,可以在这里选择。
  4. 点击 OK

PowerDesigner 开始生成代码,完成后你会在指定的目录下看到 .java 文件。


第六步:验证和优化

  1. 检查生成的代码: 打开生成的 .java 文件,检查类名、属性名、数据类型映射是否正确。
  2. 类型映射: PowerDesigner 默认的类型映射可能不完全符合你的需求。VARCHAR 可能映射为 StringDATETIME 可能映射为 java.sql.Timestamp,你可能希望它是 java.time.LocalDateTime
    • 如何修改映射:
      • 在 PDM 中,右键点击一个表,选择 Edit Attributes/Columns
      • 选择一个列,在 Type 下拉菜单旁边,点击 按钮。
      • 在弹出的窗口中,你可以修改该列的 Java Type
      • 更通用的方法是修改 PDM 的 DBMS 定义,在浏览器树中,展开 DBMS -> MySQL 8.0 -> Data Types,然后修改 VARCHAR 等类型的 Java Type 属性,这会影响整个模型。
  3. 整合到项目: 将生成的代码文件复制到你的 Java 项目中,并根据需要进行微调,例如添加业务逻辑、构造方法、自定义查询等。

高级技巧:从 PDM 到 OOM 再到 Java

对于更复杂的面向对象设计,可以采用这个流程:

  1. 创建 PDM: 如前所述,从数据库生成
分享:
扫描分享到社交APP
上一篇
下一篇