Code 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如下图:
在Object Language选项中是PowerDesigner在代码生成时支持的语言种类.其中java是两个选项,一个是java 另一个是java5.0,两个任意选择一个都可以,如果需要用到java的注解特性那么就选择java5.0,在PowerDesigner12是支持注解的.这里我们选择java,接下来的两个选项在实际使用时没有发现太大的区别,任选一个吧.下面把Name和Code填写成项目的名称和版本就可以了.接下来点击界面上方的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
我们点开已经生成好的模型,里面有很多设置选项,主要包括属性,方法,注释,关联关系等,我们可以通过查看如下图:
选项来查看代码生成的效果,从产生的效果中如果大家注意看可能会发现在关系属性上有
public YiwuUserRefRolePermission[] yiwuUserRefRolePermission;
这样的属性设置.出现数组的这中情况是由于我们生成的OOM中虽然保留了关联关系,但没有具体指明所用的集合,导致在1...*(1对多)关系上PowerDesigner找不到集合类而用数组来代替.解决的办法是我们点开模型之间的Association如下图:
里面的选项都是对关联属性做具体设置的.在下方有个Container Type选项,如下图:
这里就是要设置集合的地方.选择Set集合,下面会自动给出实现类HashSet?.这时在查看Preview选项里面的属性设置就能选择正确的集合类了.同时会产生默认的几个方法,有get set add remove 和获得Iterator的方法,这里有些是不需要的在后面我们会通过修改PowerDesigner的元模型来进行修改.其他还有很多选项都可以对生成Entity进行一些设置,但都不能完全满足我们的需要,所以我们选择对PowerDesigner的原模型进行修改来实现满足要求的Entity. 打开菜单栏 Language -> Edit Current Object Language选项,如下图:
这个界面是扩展模型编辑窗口,点开Profile选项,里面列举的是PowerDesigner的元模型,其中所有元模型都继承于Classifier元模型,在该模型中的Templates里有Source模板,在选择生成java文件时执行的就是该模板,该模板也是对其他各模板的一个组合应用.模板中使用的语言是PD提供的GTL语言.生成Entity文件我们需要修改的模板有Class,Attribute,Association等,主要是为了完成添加JPA设置,get set 方法和关联关系的设置.
修改Attribute:
这个模板是对基础属性进行的设置,如注释,变量可见度等. 首先修改Attribute -> Templates -> definition模板修改为 如下图:
修改的作用是设置属性的可见度,类型的转换和添加
@Property(Property.Source.Page)
这里的设置只能设置OOM中的基础属性,通过关联关系产生的对象属性需要在Association中进行设置.添加get set 方法,在Attribute -> Templates中添加两个方法 getterFunction 如下图:
setterFunction 如下图:
这两个方法将在修改Class的时候使用到.
修改Class:
这个模板主要是对类的一系列设置,如注释,继承关系和接口实现等. 修改的模板是Class -> Templates -> definition模板修改为 如下图:
其中上部分是通过JPA完成与数据库映射的一些设置,粘贴上去就可以了,然后把需要的变量做下修改.在最下面是对Attribute里的getterFunction和 setterFunction方法的调用.由于里面使用的变量是属于Attribute这个域的,所以在这里对Attributes(Class 的默认属性)集合进行循环就可以得到所有属性来实现get set 方法.由于Entity有继承关系的存在.所以对Templates ->extends模板也做些修改,修改后如下图:
只是简单的添加了else语句和把父类的名称加了进去.
修改Association:
这个模板是针对类之间关系的设置,其中包括:关联对象的get set 方法,JPA的设置等.
修改的模板是Association -> Templates -> Helpers -> Migrate -> accessorsMany模板,如下图:
这个模板是针对关联中需要使用集合的属性的设置模板.默认设置是包括,add,remove,Iterator方法,由于项目中并不需要这些.所以一并删除,然后对get set 进行修改来满足项目需要.
另一个需要修改的模板是Association -> Templates->Helpers ->Migrate ->accessorsOne模板 如下图:
这个模板刚好和上面的模板相反,来设置除集合外的对象关系属性.
总结
通过上述对主要部分的修改,最终基本可以满足项目需要的Entity如下图:
希望本文档能给大家一些启发.有错误的地方请告诉我,好及时修改.修改后的模板文件配置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->浏览你新命名的模版就可以了。
相关推荐
《codegenerate-3.6.1源码解析与二次开发指南》 在IT行业中,源码分析和二次开发是提升软件功能、优化性能的重要手段。本文将深入探讨"codegenerate-3.6.1源码",它是基于Jeecg框架的自动生成代码工具的源代码版本...
《深入解析Jeecg框架3.6.1的Codegenerate模块》 Jeecg框架,作为一款高效的企业级快速开发平台,一直以来深受开发者们的青睐。本文将深入剖析Jeecg框架3.6.1版本中的Codegenerate模块,帮助开发者更好地理解和运用...
codegenerate-1.0.4.jar
这里,我们关注的是一款名为"codegenerate"的工具,它与Java编程语言密切相关。 “codegenerate.zip”是一个包含Java代码生成工具的压缩包,可能是作者个人使用的项目备份或学习资料。尽管它可能不是专门设计供他人...
codegenerate-3.4.6.jar jar包
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...
Power Designer 中应用概念模型进行数据库设计 Power Designer 是一种功能强大、功能齐全的数据库设计工具,可以帮助开发者快速设计和建立数据库。下面我们将详细介绍如何使用 Power Designer 中的概念模型进行...
标题中的"CodeGenerate-master"暗示了这是一个关于代码生成器的项目,可能是开源社区的一个优秀实例,下面我们将深入探讨代码生成器的工作原理、应用场景以及它如何助力软件开发。 首先,代码生成器的核心功能是...
codeGenerate 代码自动生成jar包源码###包含的方法#### CreateFile(tableName,createUser,packageUrl,前缀)tableName为表名,createUser为创建者,packageUrl为创建根目录(一般为com),前缀为主要关键字如...
Cannot resolve org.jeecgframework.boot:codegenerate:1.0.7; missing artifact org.jeecgframework * jar; jeecg maven 经常访问不了,jeecg boot 中的 jar 不能下载,可以下载这个放到本地 maven 库即可; ...
以前开发过完整的快速开发平台,想分享里面的基本代码生成的开发流程,大概就两个重点,一是数据库表转java实体类,二是编写模版 代码生成器的核心开发流程 如何连接数据库,获取数据库信息,以及根据数据库的表字...
Spring Cloud+mybatise + mysql 自动生成代码工具 generateCode
标题中的"code generate"指的是代码生成技术,这是一个在软件开发过程中非常重要的环节,尤其是在大型项目中,能够提高开发效率并减少错误。代码生成通常涉及到自动化工具,这些工具可以根据设计模式、模板或者...
这个名为"generate-code.zip"的压缩包文件提供了Java环境下自动生成代码的功能,允许开发者根据自己的需求调整生成目录、指定数据库以及制定生成规则。这非常适合初学者学习,有助于理解代码生成的基本原理和实践...
**Code Generate (MyBatis Plus CodeGenerate)** MyBatis Plus的代码生成器可以根据数据库表结构自动生成Entity、Mapper接口和XML配置、Service接口及实现类。这样可以大大加快开发速度,减少错误,提高代码一致性。...
网上下载的代码直接导入eclipse后运行生成代码的main函数, 获取不到resources/jeecg/jeecg_config.properties, resources/jeecg/jeecg_database.properties, 因而数据库的连接一直默认为mysql, ...
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 ...
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 ...
生成Code39(extend)条形码源码 源码描述: 一、源码特点 C#GDI+绘制Code39条形码 。网上开源的众多,但却都是根据内容和长宽来确定模块宽度。本次由于某需求需要根据模块宽度以及数据多少来确定条形码的长宽。识别...
在Verilog-2001版本中,引入了`generate`语句,这极大地增强了代码的可读性和复用性,特别是在创建并行结构和根据条件实例化模块时。`generate`允许你基于变量或者条件来动态地创建模块实例、网线(net)、变量...