自定义myeclipse逆向工程模板的代码自动生成规则

上传人:wuy****ng 文档编号:136173798 上传时间:2022-08-16 格式:DOC 页数:13 大小:152.50KB
收藏 版权申诉 举报 下载
自定义myeclipse逆向工程模板的代码自动生成规则_第1页
第1页 / 共13页
自定义myeclipse逆向工程模板的代码自动生成规则_第2页
第2页 / 共13页
自定义myeclipse逆向工程模板的代码自动生成规则_第3页
第3页 / 共13页
资源描述:

《自定义myeclipse逆向工程模板的代码自动生成规则》由会员分享,可在线阅读,更多相关《自定义myeclipse逆向工程模板的代码自动生成规则(13页珍藏版)》请在装配图网上搜索。

1、在项目中,往往会用到myeclipse的自动生成代码功能,比如本人项目用其从数据库表生成对应的实体类和映射文件,但是,由于数据库表字段名称很不规范,无业务含义很难认,用myeclipse默认的规则生成得到的实体属性名是驼峰命名,很难由此推断出对应的数据库表字段名,故项目制定统一规范,实体类属性名为表字段名小写。需要修改默认的代码生成规则。网上找了不少资料以及文档,方法总结如下:方法一:修改myeclipse中自动生成代码的模板文件在myeclipse目录中搜索关键字templates,可以找到一个如myeclipse_templates_6.0.1GA.zip的包,解压即可得到自动生成代码用到

2、的所有模板文件,如需修改其中几个模板文件,则按原目录结构只留下修改的模板文件。在Hibernate Reverse-Engineering的对话框中,钩选Use custom templates,输入你存放修改后模板文件的文件夹(custom_myeclipse_templates)路径,就可以使用到自定义的模板了。具体看参考该包的说明文档。方法二:集成并自定义反转策略类自定义一个类,继承自org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy,覆盖其中生成代码的方法。具体参考方法一中那个包的说明文档。我把其中一个例子贴出来如

3、下,在自动生成的所有实体属性名前加ME_前缀下:5.6 sing a custom reverse engineering strategy Add the MyEclipse Persistence Tools library to your project.Right click your project and select Properties.On the Java Build Path page, choose Add Library. on the Libraries tab.Choose MyEclipse Libraries and then MyEclipse Persis

4、tence Tools.Press Finish.1 Figure 16. Adding the MyEclipse Persistence Tools library2 Create a new class in your project which extends the class.3 Define the single argument constructor and override a method of interest, for example, columnToPropertyName.Heres an example which prefixes all generated

5、 propertes with ME_MyStrategy.javapackagecom.genuitec.hibernate; importorg.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy; importorg.hibernate.cfg.reveng.ReverseEngineeringStrategy; importorg.hibernate.cfg.reveng.TableIdentifier; public classMyStrategy extendsDelegatingReverseEngineeringS

6、trategy publicMyStrategy(ReverseEngineeringStrategystrategy) super(strategy); publicString columnToPropertyName(TableIdentifier table, String columnName) returnME_ + super.columnToPropertyName(table, columnName); Figure 17. MyStrategy.java Source Code Listing4 On page 2 of the reverse engineering wi

7、zard, specify the class you just createdFigure 18. Specifying the reverse engineering strategy附资料一:自定义Struts的JSP模板和Hibernate的DAO模板这一阵子在MyEclipse里做项目,用到了Struts和hibernate功能,起初,对自动生成赞不绝口,但后来,发现自动生成的代码也有不方便的地方,比如:一Struts 当new一个JSP,使用Standard JSP using Struts 1.2时,生成的页面代码中只包含了Struts标签但很多时候,我们需要在页面中使用到JST

8、L标签,我们应该把常用的几个JSTL标签加到JSP页 面中,就像这样: 其次,Struts1.2的 似乎有些问题,它表示的地址是当前页面的地址,而不是应用程序的根目录,因此,这个base我们还是得用内嵌的Java代码得到,就像这样:String path = request.getContextPath(); String basePath = request.getScheme()+:/+request.getServerName()+: +request.getServerPort()+path+/;然后在之间加入base标签:这样,用起来才比较方便一点但每次都改页面,显然做了很多重复的劳

9、动,我想MyEclipse在生成这样的页面时,肯定用到了模板那么到底是那个模板呢?我们来搜搜看首先说明一下,我用的不是MyEclipse的All-In-One安装,所以有两个目录,一个是Eclipse的解压目录,另一个才是 MyEclipse的安装目录:MyEclipse 5.5.1 GA如果用的All-In-One安装,可能只有一个目录,就是MyEclipse 5.5.1 GA这里,我就把这个目录称为安装目录了在安装目录下搜索:Struts-1_2.vtl,可以得到这个文件,打开看看,其头部结构与生成的页面很相似,因此,我们只需要在适当的地方添上自己的代码即可修改前还是要注意备份二hiber

10、nate使用Hibernate Reverse Engineering最大的好处就是它可以自动生成PO和DAO的源码,以及映射配置文件但是看看DAO的代码,才发现里面的数据库操作方法都是实例 方法,用起来还必须先new一个DAO,个人觉得没有这个必要,使用静态方法就可以了,但我不可能给每个DAO的每个方法都加一个static吧于是, 跟上面一样,改模板首先得分析一下,生成的DAO是继承的BaseHibernateDAO,而BaseHibernateDAO是扩展的 IBaseHibernateDAO接口,在这个接口中,定义了getSession方法要把数据库操作方法改成static,这个 get

11、Session方法也必须是static,但是在接口中不能定义是static的方法,那么唯一的办法就是不管IBaseHibernateDAO 接口,在BaseHibernateDAO类中自己实现一个静态的getSession方法BaseHibernateDAO有模板文件,但是没有必要改它,因为一个工程只用得到一个BaseHibernateDAO我们要改的模板文件是用于 生成具体DAO类的然而在安装目录下用hibernate关键字搜一搜,并没有发现哪个文件与我们的DAO有关,难道MyEclipse把生成规则写死 在代码里了吗?我不相信MyEclipse的开发人员那么糊涂,于是用templates关

12、键字搜索了一下,发现了这个: myeclipse_templates_5.5GA.zip,打开一点,发现里面全部是有关hibernate的模板文件,另外有一个readme的说 明,关键部分如下:2) Edit the velocity templates you wish to customize. Note: POJO templates are present in the pojo folder DAO template in the dao folder HBM templates in the hbm folder 3) Optional: Though not necessary,

13、 it is recommended that you delete the velocity templates you do not plan to customize. This will prevent future confusion over which templates are being processed by MyEclipse. 4) Invoke the JPA/EJB3/Hibernate Reverse-Engineering wizard and select Use custom templates. Manually enter or click the b

14、rowse button to select the myeclipse_templates_5.5GA folder.上面的意思是:把解压之后的文件夹放在一个方便的地方(不需要放在原目录下,那样找起来很不方便),修改它,然后删掉其他你没有修改的文件,以免发生可能的冲突,最后,在Hibernate Reverse-Engineering的对话框中,钩选Use custom templates,输入你解压后的文件夹(myeclipse_templates_5.5GA)路径,就可以使用到自定义的模板了照这个意思,我修改了DAO文件夹下的daohome.vm和facadeif.vm,在其中所有的pu

15、blic标识后加上了static(我也不知道哪 些是hibernatet真正用到的,反正我不用EJB和JPA)然后照它的意思试 了一把,果然,DAO方法全变成了static 附资料二:Hibernate Reverse Engineering 向导Java src folder 选中映射文件, POJO 和 DAO 生成后所在的项目和源码文件夹.Java package 映射文件, POJO 和 DAO 生成后所在的包.Hibernate mapping file 从选中的表格生成映射文件.Update hibernate configuration 将生成后的映射文件添加到 Hibernat

16、e 配置文件中.Java Data Object 为映射文件和表格生成对应的数据对象 (POJO).Create abstract class 为每个数据对象生成一个抽象的父类. 这个抽象类将在以后的重新生成过程中覆盖掉, 但是对应的子类将不会被覆盖掉.Base persistence class 如果需要的话, 输入生成的 POJO 所要集成的父类的完整名称.Java Data Access Object 生成便于访问映射后的类和表格的数据访问对象. 用户可以在 Basic, Spring 和 JNDI DAO 中选择一种.Generate precise findBy methods 为映

17、射类中的每个属性生成一个 findBy 方法. 例如 findByFirstName(name);Use custom templates 覆盖 MyEclipse 的内部 velocity 模版为你自己的版本.参考 使用模版来更好的调节生成的代码 来获取更多信息.Template directory 包含了自定义模版的目录树的根节点.图 14. Hibernate Reverse Engineering 向导 - 第 2 页第 2 页可以使用默认的设置, 选择 Next.表 5 - Hibernate Reverse Engineering 向导 - 第 2 页Rev-eng setting

18、s file 这个文件包含了反向工程的配置和选项以供以后使用. 点击 Setup. 按钮来选择现有的文件或者创建一个新的文件.如果找不到一个这样的配置文件的话向导将会自动创建此文件.Custom rev-eng strategy 允许你指定一个自定义的反向工程策略类. 这个类允许你用编程的方式来自定义反向工程处理过程的各个方面. 参考 使用自定义反向工程策略 来获取详细信息.Type Mapping 决定是否在类型映射属性中使用 Java 或者 Hibernate 类型, 例如 java.lang.String 对应 string. 这个设置只能在向导第 3 页的 Customized Typ

19、e Mappings 列表中没有指定更多信息时才能使用.ID Generator ID Generator 是 Hibernate 映射文件必须有的内容. 它定义了持久类实例的唯一主键生成器 Jaav 类. 参考 资源 部分里面的 Hibernate 文档链接, 里面描述了每个 ID 生成器的详细信息.如果留空或者更详细的配置在这个向导的第 3 页没有配置, Hibernate 映射引擎将自动为你选择一个 ID 生成器.Generate basic typed composite IDs 如果数据库表格包含有多个列的主键, 将总是使用 映射.如果这个选项启用并且有对应的多个外键, 每个主键列将

20、依然会被作为简单的 标量 (string, long, 等), 而不是引用到一个实体. 将会创建 元素, 但是它们将会标记为非可更新和非可插入的字段.如果你禁用这个选项(默认推荐用这种方式), 将会创建 元素来代替上面的生成内容.Generate version and timestamp tags 如果启用, 名为 version 和 timestamp 的列将会在生成的映射文件中作为 和 标记出现.Customized Type Mappings 允许你来指定一个自定义的 JDBC 类型到 Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nul

21、lability 作为精度控制对应原来的 JDBC 类型.# 再第 3 页页可以使用默认的设置, 选择 Finish 将启动反向工程处理.图 15. Hibernate Reverse Engineering 向导 - 第 3 页表 6 - Hibernate Reverse Engineering 向导 - 第 3 页Class name 对应当前数据库表格的数据对象类的完整名称.ID Generator 想要对当前表所使用的 ID 生成器.JDBC type 对当前列所使用的 JDBC 类型覆盖.Property name 对应当前列所生成的属性名.Hibernate type 对应当前列

22、的 Hibernate 类型.Include referenced / referencing tables 包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表.Generate support for ListedTable(fk)-UnlistedTable and UnlistedTable(fk)-ListedTable 生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示.在这个向导完成之后将会进行下面所列的操作: *创建类 AbstractEchoMessage . 这个抽象类提供了所需的 Hibernate 兼容的功能例如 publi

23、c 的读取器和设置器方法, 这些方法对应的持久化属性和 ECHO_MESSAGE 数据库表格中的列相对应. *创建了一个 EchoMessage Java 类, 是 AbstractEchoMessage 类的一个具体的子类. EchoMessage 的目的是为了被修改后提供额外的业务和验证逻辑, 并且不会被后续的生成代码过程所覆盖. *创建了 EchoMessage.hbm.xml Hibernate 映射描述符. 这个文件指示 Hibernate 如何将 EchoMessage Java 类和 ECHO_MESSAGE 数据库表格中的数据相互映射. *在文件 hibernate.cfg.x

24、ml 中注册 EchoMessage.hbm.xml 映射描述符. *创建了 Java 类 EchoMessageDAO. 这个类提供了对 EchoMessage 数据对象类的方便的访问和操作. *创建 IBaseHibernateDAO 接口和 BaseHibernateDAO 类. 这些类对基本的 DAO 来说是必要的, 因为它使用了添加 Hibernate 功能时候所生成的 Session 工厂类(com.genuitec.hibernate.HibernateSessionFactory)来获取 Hibernate 会话. 图 15 高亮显示了所生成的类, 关键方法和映射文件, 以及被

25、添加到 hibernate.cfg.xml 文件中的对生成的映射文件的引用. 图 15. Hibernate 反向工厂向导执行结束后更新过的项目内容5.5 使用模版调整生成更好的代码 * e.doc/html/quickstarts/hibernate/myeclipse_templates_5.5GA.zip这个文件到你的电脑的文件系统上. * 按照 README.txt 文件中的说明来自定义这个模版. * 调用反向工程向导, 在第 1 页选择启用 Use custom templates 选项, 然后将 Template directory 指向到包含模版树的文件夹e.5.6 使用自定义反

26、向工程策略 1. 向你的项目中添加 MyEclipse Persistence Tools 类库. * 右键点击你的项目然后选择 Properties. * 在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library. * 选择 MyEclipse Libraries ,接着选中 MyEclipse Persistence Tools. * 点击 Finish. 图 16. 添加 MyEclipse Persistence Tools 类库 2. 在你的项目中创建一个新类, 让这个类继承自 org.hibernate.cfg.reveng.Deleg

27、atingReverseEngineeringStrategy 类. 3. 定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, columnToPropertyName. 这里是一个例子, 将在所有生成的属性前添加一个 ME_ 前缀. MyStrategy.java package com.genuitec.hibernate; import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy; import org.hibernate.cfg.reveng.ReverseEngineeringSt

28、rategy; import org.hibernate.cfg.reveng.TableIdentifier; public class MyStrategy extends DelegatingReverseEngineeringStrategy public MyStrategy(ReverseEngineeringStrategy strategy) super (strategy); public String columnToPropertyName(TableIdentifier table, String columnName) return ME_ + super.colum

29、nToPropertyName(table, columnName); 图 17. MyStrategy.java 源代码清单 4. 在反向工程向导的第 2 页, 选中刚才所创建的类 图 18. 指定反向工程策略5.7 编辑映射文件MyEclipse 包含了定制过的 XML 编辑器来专门用于修改 Hibernate 映射文件 (*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择 Open With MyEclipse Hibernate Mapping Editor.功能 * 超链接浏览到引用到的类和属性. * 类名自动完成提示. * 属性名自动完成提示. * 映射文件元素, 属性和值的内容完成提示. 图 19. Hibernate 映射文件编辑器

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!