`
zzc1684
  • 浏览: 1191657 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Code Generate of Power Designer

阅读更多

 

Code Generate of Power Designer

Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermatCode Generate of Power Designer

说明

本文档是通过PowerDesigner自动生成Entity的一个功能实现说明文档.
通过PowerDesigner来自动生成Entity个人感觉是非常实用的,可以实现Entity的属性定义,get set 方法,类的继承以及接口实现,JPA
形式实现与数据库的字段映射和表之间的关联关系映射.通过该功能大家基本上可以从手写Entity的工作中解脱出来,而且通过PowerDesigner来自动生
Model也肯定会比手动来完成Entity效率上要高一些.
实现目的和效果都说了,接下来让我们一下看看具体该如何实现?

功能实现

首先介绍下PowerDesigner几种模型.
PowerDesigner共有4种模型:概念数据模型 (CDM)物理数据模型 (PDM) 面向对象模型 (OOM) 业务程序模型 (BPM)
在这里我们需要做的是,先创建PDM,通过PowerDesigner Tools -> Generate Object-Oriented Model操作来自动生成OOM.也可以跳 过第一步,直接手动创建OOM.最后的Entity就是通过OOM来实现的.

通过PDM生成OOM

在这里我把生成过程中需要设置和注意的地方做下简单说明.
前面讲过生成是通过PowerDesigner Tools -> Generate Object-Oriented Model操作来完成的.该操作点击进入后是OOM Generation Options界面.里面是两个单选框,一个是创建新的OOM 另一个是修改已经存在的OOM,在这里我们选择创建一个新的OOM如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
Object Language选项中是PowerDesigner在代码生成时支持的语言种类.其中java是两个选项,一个是java 另一个是java5.0,两个任意选择一个都可以,如果需要用到java的注解特性那么就选择java5.0,PowerDesigner12是支持注解的.这里我们选择java,接下来的两个选项在实际使用时没有发现太大的区别,任选一个吧.下面把NameCode填写成项目的名称和版本就可以了.接下来点击界面上方的Detail选项,里面有四个选项,分别是Check Model,Save generation dependencies,O/R Mapping,Convent names into codes.Check Model 默认是打勾的,它在生成OOM时会对模型的格式进行检测.如果PDM有错误的地方在下方Check Model控制台中会有错误提示信息.后面三个选项除了O/R Mapping 不选外其他的都选上,O/R Mapping是在生成hibernate Mapping文件时需要设置的.现在生成OOM的基本设置就完成了.点确定就会自动生成OOM.

通过OOM生成Entity

我们点开已经生成好的模型,里面有很多设置选项,主要包括属性,方法,注释,关联关系等,我们可以通过查看如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
选项来查看代码生成的效果,从产生的效果中如果大家注意看可能会发现在关系属性上有

  public YiwuUserRefRolePermission[] yiwuUserRefRolePermission;

这样的属性设置.出现数组的这中情况是由于我们生成的OOM中虽然保留了关联关系,但没有具体指明所用的集合,导致在1...*(1对多)关系上PowerDesigner找不到集合类而用数组来代替.解决的办法是我们点开模型之间的Association如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
里面的选项都是对关联属性做具体设置的.在下方有个Container Type选项,如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
这里就是要设置集合的地方.选择Set集合,下面会自动给出实现类HashSet?.这时在查看Preview选项里面的属性设置就能选择正确的集合类了.同时会产生默认的几个方法,get set add remove 和获得Iterator的方法,这里有些是不需要的在后面我们会通过修改PowerDesigner元模型来进行修改.其他还有很多选项都可以对生成Entity进行一些设置,但都不能完全满足我们的需要,所以我们选择对PowerDesigner的原模型进行修改来实现满足要求的Entity. 打开菜单栏 Language -> Edit Current Object Language选项,如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
这个界面是扩展模型编辑窗口,点开Profile选项,里面列举的是PowerDesigner元模型,其中所有元模型都继承于Classifier元模型,在该模型中的Templates里有Source模板,在选择生成java文件时执行的就是该模板,该模板也是对其他各模板的一个组合应用.模板中使用的语言是PD提供的GTL语言.生成Entity文件我们需要修改的模板有Class,Attribute,Association,主要是为了完成添加JPA设置,get set 方法和关联关系的设置.

修改Attribute:

这个模板是对基础属性进行的设置,如注释,变量可见度等首先修改Attribute -> Templates -> definition模板修改为 如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
修改的作用是设置属性的可见度,类型的转换和添加

@Property(Property.Source.Page)

这里的设置只能设置OOM中的基础属性,通过关联关系产生的对象属性需要在Association中进行设置.添加get set 方法,Attribute -> Templates中添加两个方法 getterFunction 如下图:

Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat

setterFunction 如下图:

Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat

 

 

这两个方法将在修改Class的时候使用到.

修改Class:

这个模板主要是对类的一系列设置,如注释,继承关系和接口实现等修改的模板是Class -> Templates -> definition模板修改为 如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
其中上部分是通过JPA完成与数据库映射的一些设置,粘贴上去就可以了,然后把需要的变量做下修改.在最下面是对Attribute里的getterFunction setterFunction方法的调用.由于里面使用的变量是属于Attribute这个域的,所以在这里对Attributes(Class 的默认属性)集合进行循环就可以得到所有属性来实现get set 方法.由于Entity有继承关系的存在.所以对Templates ->extends模板也做些修改,修改后如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
只是简单的添加了else语句和把父类的名称加了进去.

修改Association:

这个模板是针对类之间关系的设置,其中包括:关联对象的get set 方法,JPA的设置等.
修改的模板是Association -> Templates -> Helpers -> Migrate -> accessorsMany模板,如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
这个模板是针对关联中需要使用集合的属性的设置模板.默认设置是包括,add,remove,Iterator方法,由于项目中并不需要这些.所以一并删除,然后对get set 进行修改来满足项目需要.
另一个需要修改的模板是Association -> Templates->Helpers ->Migrate ->accessorsOne模板 如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
这个模板刚好和上面的模板相反,来设置除集合外的对象关系属性.

总结

通过上述对主要部分的修改,最终基本可以满足项目需要的Entity如下图:
Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
希望本文档能给大家一些启发.有错误的地方请告诉我,好及时修改.修改后的模板文件配置java.xol

模版配置文件的使用方法

建议,下载java.oxl 然后保存文件到下面目录:Sybase\PowerDesigner 12\Resource Files\Object Languages\命名java_infowarelab.oxl,用记事本打开找到

 

<?PowerDesigner AppLocale="UTF16"Code="Java"Family="Java"

SubFamily="J2EE"signature="XOL_XML"version="12.0.0.1700"?>

 

修改name属性为任何你想要的就可以了
然后pd总选择language->change current object language->浏览你新命名的模版就可以了。

分享到:
评论
1 楼 zbz 2013-11-01  
java.oxl下载不了啦

相关推荐

    codegenerate-1.0.4.jar

    codegenerate-1.0.4.jar

    codegenerate-3.6.1源码

    codegenerate-3.6.1.jar的源码,下载了最新jd-gui工具反编译的。jeecg框架是最新的3.7,最近做二次开发需要修改自动生成代码。做jeecg二次开发的可以相互探讨交流

    codegenerate-3.6.1

    codegenerate-3.6.1.jar的源码,下载了最新jd-gui工具反编译的。jeecg框架是最新的3.7,最近做二次开发需要修改自动生成代码。做jeecg二次开发的可以相互探讨交流

    codegenerate-3.4.6.jar

    codegenerate-3.4.6.jar jar包

    codegenerate-1.3.8-javadoc

    codegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8-javadoccodegenerate-1.3.8...

    codegenerate.zip

    自己用的,只是放在这里存一下,不是给别人下的,下了自己研究一下倒也是可以用的。

    codeGenerate:代码自动生成jar包源码-源码包

    codeGenerate 代码自动生成jar包源码###包含的方法#### CreateFile(tableName,createUser,packageUrl,前缀)tableName为表名,createUser为创建者,packageUrl为创建根目录(一般为com),前缀为主要关键字如...

    CodeGenerate-master_代码生成器_

    代码生成器,很好的例子,方便程序的开发

    jeecgframework.zip

    Cannot resolve org.jeecgframework.boot:codegenerate:1.0.7; missing artifact org.jeecgframework * jar; jeecg maven 经常访问不了,jeecg boot 中的 jar 不能下载,可以下载这个放到本地 maven 库即可; ...

    code-generate.zip

    以前开发过完整的快速开发平台,想分享里面的基本代码生成的开发流程,大概就两个重点,一是数据库表转java实体类,二是编写模版 代码生成器的核心开发流程 如何连接数据库,获取数据库信息,以及根据数据库的表字...

    GenerateCode.java

    Spring Cloud+mybatise + mysql 自动生成代码工具 generateCode

    Generate statement for hardcode

    Generate code statement for hardcode

    Code-Generate-源码.rar

    Code-Generate-源码.rar

    jeecg-framework 代码生成器

    网上下载的代码直接导入eclipse后运行生成代码的main函数, 获取不到resources/jeecg/jeecg_config.properties, resources/jeecg/jeecg_database.properties, 因而数据库的连接一直默认为mysql, ...

    code generate

    NULL 博文链接:https://laozhuang.iteye.com/blog/2116415

    MyBatis-Generate

    It will generate code for all versions of MyBatis, and versions of iBATIS after version 2.2.0. It will introspect a database table (or many tables) and will generate artifacts that can be used to ...

    Verilog中generate用法

    Verilog-2001添加了generate循环,...1. generate语法有generate for, genreate if和generate case三种 2. generate for语句必须有genvar关键字定义for的变量 3. for 的内容必须加begin和end 4. 必须给for语段起个名字

    Code.Generation.with.Roslyn.epub

    Compile code that you generate programmatically Discover generated code and run it dynamically to implement new business logic Debug problems in generated code Deploy and access generated code Who ...

    pn.zip_PN generate_PN Order_generate pn code_it

    It s a code to generate the PN Sequence upto order 21 so its nice

    vue-code-generate:代码生成工具

    工具使用场景vue + element-ui + 不想写重复的组件代码结合vscode插件 TODO Highlight使用 效果更加,会高亮需要插入业务代码的区域使用方法cd ${项目目录}选择生成方式代码片段文件地址输入要生成的文件地址:${...

Global site tag (gtag.js) - Google Analytics