自定义myeclipse逆向工程模板的代码自动生成规则
通过Hibernate将数据库在myeclipse中逆向生成
通过Hibernate将数据库在myeclipse中逆向生成1.首先准备好数据库。
2.在MyEclipse的右上角切换透视图,切换到MyEclipse Database Explorer3.在最左边点击右键,选择New(也就是新建一个数据库连接),然后编写第一个页面,Driver template: MySQL Connector/J (因为是建立数据库连接)Driver name :icloud(这个名字随便起,方便以后使用)Connection URL :jdbc:myslq://localhost:3306/icloud?useUnicode=true& characterEncoding=UTF-8(这里如果最后地数据库,写localhost;如果在别的机子上,填写对方的ip;这个地方的 icloud是数据库的名称;当然后面还可以加一些配置,例如加密方式是统一的,都是用UTF-8进行加密)User name :root (数据库访问的用户名,mysql默认用户为root。
)Password:¥¥¥¥¥(设置数据库的密码)Driver JARs :点击Add JARs ,然后将mysql-connector-java-5.1.6-bin.jar添加进去,也可以是其他版本。
Driver classname:com.mysql.jdbc.Driver最后点击Test Driver,如果返回Database connection successfully established.说明第一步成功。
4.点击Next,进入第二个界面,选择第三个单选按钮(Display the selected Schemas),然后点击右边的Add按钮,也就是说添加你的数据库,然后点击完成按钮,这样你的数据库连接就创建好了。
5.切换到MyEclipse Java Enterprise 的透视图,创建一个Web Project,名字、保存路径什么的自己填写,我起来个icloud。
myeclipse hibernate反向工程图文教程
Myeclipse6.0 的hibernate反向工程第一步:建DB Browser方法一:Window -> Open Persipective -> MyEclipse Database Explorer以后步骤同二方法二: window / show view /other 选择如下图最后,点击OK,在工作空间上将会出现一个DB Browser的配置页面,在配置页面空白处,右键,选择New按钮在弹出的对话框当中配置数据库连接点完成即可点击my_driver 可以new 表等点connect to my_driver 可以new sql编辑器执行sql: 本次执行sql 例子如下:create table testUser(id int not null,username varchar(200),age int,primary key ("ID"))点击左上绿色按钮即可执行sql第二步:新建java工程(简单省略了),初始化Hibernate开发环境点击工程鼠标右键得到下图:Next (选择刚才你建立的db browser)Next 新进包名如图点击完成新的工程目录结构如下图所示:我们可以看到,系统自动给我们生成了HibernateSessionFactory.java及Hibernate.cfg.xml配置文件,并将Hibernate环境所需要的外部包文件也加入到CLASSPATH当中。
第三步:通过反向工程,生成POJO及hbm映射文件:在DB Browser配置界面,入进hibernate数据库,如下图所示:找到该用户下刚才所建的表将弹出如下的对话框,在Java package当中输入产生的hibernate映射的JavaBean为com.gjrencai.model,详细请参考下图点击Next>按钮,在新的对话框当中,在ID Generator的选项当中选择increment,表示ID为数据库自增长类型。
MyEclipse编码设置
MyEclipse编码设置一、设置新建常见类型文件的默认编码格式,也就是文件保存的格式。
在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致,即GBK。
在简体中文系统下,ANSI 编码代表GBK编码;在日文操作系统下,ANSI 编码代表JIS 编码。
Window-->Preferences-->General -->content Types在右侧窗口中展开每一个子项,依次输入编码格式,如“UTF-8”点击“update”就设置好了。
例如:在以上设置中,设置jsp默认编码格式为“UTF-8”,那么以后新建的jsp文件,都是以“UTF-8”的格式保存的。
同样设置java默认编码格式为“UTF-8”,那么以后新建的java文件,都是以“UTF-8”的格式保存的。
设置html默认编码格式为“UTF-8”,那么以后新建的html文件,都是以“UTF-8”的格式保存的。
以上设置了文件的保存编码格式,默认的打开方式(解码方式)会跟保存编码格式一样。
二、设置新建其他文件的默认编码格式,即文件保存格式。
在第一项设置中,只是设置了常用文件类型的编码格式。
如果新建一个文件,没有后缀名,也就是不指名文件类型,那么MyEclipse无法判断该用何种编码格式保存,就用操作系统默认文件保存编码格式GBK进行保存。
这个默认保存编码格式,可用如下方法修改:window-->preferences-->general-->workspace 在右侧Text file encoding->Other 选择UTF-8三、单个文件查看编码格式(也就是打开文件用的编码格式)更改。
这个方法没有更改文件的编码格式,只是告诉MyEclipse用何种编码格式进行解码。
在要查看的文件上,如文件Test.java上右键-->Properties-->Resource在右侧Text file encoding ->Other,可以进行修改。
代码生成器原理
代码生成器原理代码生成器是一种能够根据特定规则和模板自动生成代码的工具,它能够极大地提高开发效率,减少重复劳动,降低出错率。
代码生成器的原理是通过对特定的输入进行解析和处理,然后根据预先定义的模板生成相应的代码文件。
接下来,我们将详细介绍代码生成器的原理及其实现方式。
1. 输入解析。
代码生成器的第一步是对输入进行解析,通常输入可以是数据库表结构、接口定义、配置文件等。
在解析过程中,代码生成器会对输入进行语法分析和词法分析,将输入转换为抽象语法树(AST)或其他中间表示形式。
这一步骤的关键是准确地理解输入的含义和结构,以便后续的代码生成工作。
2. 模板定义。
模板定义是代码生成器的核心部分,它包括了代码的结构、格式、占位符等信息。
通常模板可以使用类似于文本替换的方式,将输入中的数据填充到模板中相应的位置。
模板定义需要考虑到生成代码的可读性、可维护性和扩展性,同时也需要考虑到生成代码的性能和效率。
3. 代码生成。
在输入解析和模板定义完成之后,代码生成器就可以开始生成代码了。
生成代码的过程通常是遍历解析得到的中间表示形式,根据模板定义将相应的数据填充到模板中,最终生成目标代码文件。
在生成代码的过程中,代码生成器需要考虑到代码的格式化、缩进、注释等细节,以保证生成的代码符合相应的编码规范和风格。
4. 输出结果。
最后一步是输出生成的代码文件,通常代码生成器会将生成的代码文件保存到指定的目录中,以便开发人员进一步的处理和使用。
在输出结果的过程中,代码生成器需要考虑到文件的命名、目录的结构、文件的编码等问题,以便生成的代码文件能够被方便地使用和管理。
代码生成器的实现方式可以有很多种,可以是基于模板引擎的文本替换,也可以是基于抽象语法树的代码重构,还可以是基于元模型的模型转换。
不同的实现方式有各自的优缺点,选择合适的实现方式需要考虑到具体的需求和场景。
总之,代码生成器是一种能够极大地提高开发效率的工具,它的原理是通过对输入进行解析和处理,然后根据预先定义的模板生成相应的代码文件。
mybatis逆向工程使用步骤详解
mybatis逆向⼯程使⽤步骤详解使⽤mybatis⽣成逆向⼯程的详细步骤,我个⼈感觉这个是最简单的⼀个了,虽然⽹上有很多种的⽅法来⽣成逆向⼯程,可是这个⽅法最简单。
在这⾥我是使⽤maven搭建的环境,但是在正常的环境下也是⼀样的。
步骤:1、创建⼀个genreatorConfig.xml⽂件,这个⽂件的名字可以任意。
我创建的时候是将它放在了src/main/resources下,这个⽂件的内容并不需要去记,只需要去⽹上找就可以了。
我们要做的只是对配置⽂件当中的⼀些部分做修改,修改成⾃⼰的数据就可以了。
1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE generatorConfiguration3 PUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN"4 "/dtd/mybatis-generator-config_1_0.dtd">56 <generatorConfiguration>7 <!--数据库驱动,最好不要有中⽂字符,不然会找不到-->8 <classPathEntry location="D:\MysqlJdbcconnector/mysql-connector-java-5.1.41-bin.jar" />91011 <context id="DB2Tables" targetRuntime="MyBatis3">1213 <commentGenerator>14 <property name="suppressDate" value="true"/>15 <property name="suppressAllComments" value="true"/>16 </commentGenerator>17 <!--数据库链接地址账号密码-->18 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/pet_hospital" userId="root" password="112233">19 </jdbcConnection>20 <javaTypeResolver>21 <property name="forceBigDecimals" value="false"/>22 </javaTypeResolver>23 <!--⽣成Model类存放位置-->24 <javaModelGenerator targetPackage="com.qianfeng.bean" targetProject="src/main/java">25 <property name="enableSubPackages" value="true"/>26 <property name="trimStrings" value="true"/>27 </javaModelGenerator>28 <!--⽣成映射⽂件存放位置-->29 <sqlMapGenerator targetPackage="com.qianfeng.bean" targetProject="src/main/java">30 <property name="enableSubPackages" value="true"/>31 </sqlMapGenerator>32 <!--⽣成DaoMapper类存放位置-->33 <javaClientGenerator type="XMLMAPPER" targetPackage="com.qiafeng.dao" targetProject="src/main/java">3435 <property name="enableSubPackages" value="true"/>3637 </javaClientGenerator>38 <!--⽣成对应表及类名,需要记住的⼀点是逆向⼯程⽆法⽣成关联关系,只能⽣成单表操作-->39 <table tableName="owners"40 domainObjectName="Owners"41 ></table>42 <table tableName="pets"43 domainObjectName="Pets"44 ></table>45 <table tableName="types"46 domainObjectName="Types"47 ></table>48 <table tableName="employee"49 domainObjectName="Employee"50 ></table>51 <table tableName="specialties"52 domainObjectName="Specialties"53 ></table>54 <table tableName="vets"55 domainObjectName="Vets"56 ></table>57 <table tableName="visits"58 domainObjectName="Visits"59 ></table>60 <table tableName="vet_specialties"61 domainObjectName="VetSpecialties"62 ></table>6364 </context>65 </generatorConfiguration>2、导⼊相应的jar包,mybatis-generator-core这个包和mysql-connector-java这个包3、创建⼀个测试类,然后运⾏下⾯代码就可以了。
逆向工程与反编译:了解代码的实现原理
逆向工程与反编译:了解代码的实现原理逆向工程和反编译是信息技术领域中常用的两种技术手段,用于研究和了解程序的实现原理。
通过逆向工程和反编译,可以对程序进行分析,从而帮助开发者理解其功能、结构和设计思路。
本文将分别介绍逆向工程和反编译的概念、原理以及应用。
逆向工程是指通过对软件、硬件、网络等产品的逆向分析,解析其设计和结构,了解其工作原理和功能。
逆向工程的目的通常是为了学习和研究产品的设计理念,或者为了改进和优化产品的性能。
逆向工程的过程通常包括反汇编、反编译、静态分析等步骤,通过这些步骤可以还原程序的源代码,了解程序的逻辑和实现细节。
反编译是逆向工程的一个重要技术手段,即将机器语言代码转换为高级语言代码的过程。
在计算机科学领域中,程序源代码经过编译器编译后会生成机器语言代码,反编译则是将这些机器语言代码还原为可读的高级语言代码的过程。
通过反编译,开发者可以更方便地分析和了解程序的算法和逻辑。
在实际应用中,逆向工程和反编译在软件安全领域中起着重要作用。
黑客可以利用逆向工程和反编译技术对软件进行攻击,窃取用户信息或者破坏系统安全。
因此,开发者和安全专家需要不断提高自身的逆向工程和反编译能力,加强软件的安全防护措施。
另外,逆向工程和反编译也广泛应用于软件开发和研究领域。
开发者可以通过逆向工程和反编译技术了解竞争对手的产品设计和实现原理,从而提高自己的产品竞争力。
研究人员也可以通过逆向工程和反编译技术分析和优化软件的性能和功能,推动技术的发展和创新。
总之,逆向工程和反编译是信息技术领域中重要的研究技术,通过这些技术手段可以深入了解程序的实现原理,帮助开发者和研究人员解决各种技术难题。
随着技术的不断发展和完善,逆向工程和反编译将在未来发挥更加重要的作用,推动软件行业的进步和发展。
代码生成与自动化:减少重复代码并提高开发效率
代码生成与自动化:减少重复代码并提高开发效率代码生成与自动化是指利用计算机技术来生成代码并自动化执行开发工作的过程。
通过代码生成和自动化,开发人员可以减少手动编写重复代码的工作量,并提高开发效率和代码质量。
本文将详细介绍代码生成与自动化的概念、原理、应用场景和优势。
代码生成是指利用一些预先定义的规则和模板来自动生成代码的过程。
它可以通过将一个高级语言编译为低级代码,或者通过根据模型定义生成代码,来自动生成大量的代码。
代码生成可以应用于各个层次的软件开发过程,包括数据模型、业务逻辑、用户界面等。
代码自动化是指通过编写脚本和使用工具,自动化执行各种开发过程。
它可以包括构建、测试、部署、发布等一系列开发环节。
代码自动化可以有效地降低开发过程中的人为错误,提高工作效率和代码质量。
代码生成和自动化的原理包括以下几个方面:1.模板引擎:通过模板引擎,开发人员可以定义代码生成的规则和模板,包括变量、条件语句、循环语句等。
模板引擎可以根据定义的规则,将模型数据转换为可执行的代码。
2.元模型:通过定义元模型,开发人员可以描述数据模型的结构、属性、关系等。
元模型可以用来生成代码,也可以用来验证数据模型的正确性。
3.代码分析:通过对已有代码进行分析,可以提取出重复的代码块和模式,并将其封装为可重用的组件。
开发人员可以通过自动化工具来完成代码分析和重构,以提高代码的可读性和可维护性。
代码生成和自动化在软件开发中有广泛应用的场景,包括但不限于以下几个方面:1.数据库开发:通过定义数据模型,可以自动生成数据库表结构和SQL语句,减少手动编写数据库代码的工作量。
2. Web开发:通过使用模板引擎和框架,可以自动生成Web页面、API接口等,减少手动编写HTML、CSS、JavaScript等前端代码的工作量。
3.移动开发:通过使用移动开发框架和自动化工具,可以自动生成移动应用的界面、逻辑处理等,减少手动编写移动应用代码的工作量。
程序编辑器中的代码模板管理技巧
程序编辑器中的代码模板管理技巧在程序编辑器中,代码模板的管理技巧是程序员们必备的一项技能。
代码模板可以帮助提高开发效率,减少编码错误。
本文将介绍几种常用的代码模板管理技巧,帮助程序员们更好地利用这一功能。
一、快捷键大多数程序编辑器都提供了快捷键功能,可以为常用代码模板设置独特的快捷键。
通过按下组合键,就可以插入代码模板,省去了手动输入的繁琐步骤。
例如,在Eclipse编辑器中,可以通过Ctrl+Space快捷键调出代码提示,再按下Enter键即可插入所需代码模板。
合理设置快捷键可以提高工作效率,降低出错率。
二、代码片段代码片段是一种更高级的代码模板形式,可以插入一段完整的代码块。
通过代码片段,可以在一次性插入一段代码的同时,填入可变参数。
代码片段通常是通过一段特殊的文本触发,并在程序编辑器中自动生成特定的代码块。
不同的编辑器有不同的代码片段插入方式,通常是通过预定义的文本触发快捷键或关键字。
例如,在Visual Studio Code编辑器中,可以通过输入特定的关键字来触发代码片段的自动生成。
三、代码块代码块是一种可以在代码中嵌套的代码模板形式。
不同于代码片段,代码块不需要手动触发,而是根据特定的语法规则进行自动生成。
代码块通常用于定义循环、条件语句等需要多行代码的情况。
通过设置代码块,可以简化复杂代码的编写过程,并减少编码错误。
例如,在IntelliJ IDEA编辑器中,可以通过输入特定的代码块关键字,然后通过Tab键自动生成代码块。
四、自定义代码模板大多数程序编辑器都提供了自定义代码模板的功能。
通过自定义代码模板,程序员可以根据个人需求和编码规范,定义自己的代码片段、代码块等模板格式。
这样可以根据实际需求进行灵活调整,提高编码效率和代码风格的统一性。
例如,在Sublime Text编辑器中,可以通过设置snippet文件来自定义代码模板。
通过简单的语法规则,可以定义代码模板的结构和内容。
五、代码模板管理工具除了使用编辑器自带的代码模板功能外,还可以借助第三方代码模板管理工具来进行更复杂的代码模板管理。
代码自动生成技术的使用方法和代码质量评估
代码自动生成技术的使用方法和代码质量评估代码自动生成技术是一种可以提高开发效率的工具,它能根据预设的规则和模板来生成代码,减少了手动编写代码的过程。
本文将介绍代码自动生成技术的使用方法,并探讨如何评估生成代码的质量,以帮助开发人员更好地利用这一技术。
一、代码自动生成技术的使用方法代码自动生成技术可以分为基于模型驱动的开发(Model Driven Development,MDD)和基于模板的代码生成(Template-Based Code Generation)两种方式。
下面将分别介绍这两种方式的使用方法。
1. 基于模型驱动的开发基于模型驱动的开发是一种使用领域特定语言(Domain-Specific Language,DSL)来描述系统模型的方法。
开发人员首先需要定义系统的领域模型,包括实体、关系、行为等。
然后利用DSL工具将领域模型转化为代码。
最后,根据生成的代码进行进一步的开发和维护。
使用基于模型驱动的开发需要具备一定的建模能力和对领域特定语言的了解。
开发人员需要学习和掌握相应的建模工具和DSL,例如Eclipse Modeling Framework、EMF Codegen等。
此外,数据库设计、UML建模等知识也对使用该技术有所帮助。
2. 基于模板的代码生成基于模板的代码生成是一种使用预定义的模板和变量数据来生成代码的方法。
开发人员首先需要定义代码生成的模板,包括类、方法、属性等结构。
然后根据具体的业务需求提供变量数据,如实体的属性、关联关系等。
最后,通过执行生成代码的脚本或工具,即可生成完整的代码文件。
使用基于模板的代码生成相对于基于模型驱动的开发来说更加简单,不需要学习和掌握专门的建模工具和DSL。
开发人员可以选择合适的模板引擎,如Freemarker、Velocity等,来编写和管理代码模板。
二、代码质量评估的方法和指标代码自动生成技术可以为我们快速生成大量的代码,但生成的代码质量如何,对于保证系统的可维护性和可扩展性至关重要。
mybatis逆向工程--自动生成实体代码(mybatis-generator)
mybatis逆向⼯程--⾃动⽣成实体代码(mybatis-generator)随便找个⽬录, 添加⽂件, 如图接下来看下配置⽂件, 直接贴出代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--数据库驱动--><classPathEntry location="mysql-connector-java-5.1.40.jar"/><context id="DB2Tables" targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!--数据库链接地址账号密码--><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/test" userId="root" password="root"> </jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--⽣成Model类存放位置--><javaModelGenerator targetPackage="test.model" targetProject="src"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!--⽣成映射⽂件存放位置--><sqlMapGenerator targetPackage="test.mapping" targetProject="src"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--⽣成Dao类存放位置--><javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--⽣成对应表及类名--><table tableName="test" domainObjectName="Test" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table></context></generatorConfiguration>需要修改的地⽅:location="mysql-connector-java-5.1.40.jar" -------要和你的实际下载的jar版本对应<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/test" userId="root" password="root"> </jdbcConnection> -------数据库连接信息-------⽣成⽂件的位置, 可以改, 不改也没关系tableName="test" domainObjectName="Test" -------表名和对应的实体类名使⽤⽅法:在⽬录⾥, 按住shift, 右键, 在此处打开命令窗⼝, 执⾏⽣成语句⽣成语句: java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml -overwrite 同样, jar包版本要对应成功之后, 如图, 会⽣成对应的⽂件总结⼀下: 2个jar包, 1个⽣成代码的路径, 1个配置⽂件, 1句执⾏命令generator 也可以⽤maven⼯程来构建, 这⾥就不细说了.。
Maven中Mybatis逆向工程的使用(自动生成代码)
Maven中Mybatis逆向⼯程的使⽤(⾃动⽣成代码)1、添加maven插件,让maven环境⽀持mybatis-generator组件在pom.xml⾥⾯添加如下代码:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.mybatis.generator</groupId><artifactId>mybatis-generator</artifactId><version>0.0.1-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><!-- Mybaits逆转⼯程依赖包 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><!-- Mybaits 依赖jar包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.1</version></dependency><!-- log4j 依赖jar包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration><version>3.3</version></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency></dependencies><configuration><!--配置⽂件的路径 --><configurationFile>src/main/resources/generatorConfig.xml</configurationFile><overwrite>true</overwrite></configuration></plugin><!--JDK版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding><showWarnings>true</showWarnings></configuration></plugin></plugins></pluginManagement></build></project>2、新建generatorConfig.xml配置⽂件(在pom.xml中配置此⽂件路径)<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="generateTables" targetRuntime="MyBatis3"><!-- 此处是将 Example 改名为 Criteria<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"><property name="searchString" value="Example" /><property name="replaceString" value="Criteria" /></plugin> --><!-- 序列化 --><plugin type="org.mybatis.generator.plugins.SerializablePlugin"/><commentGenerator><!-- 是否去除⾃动⽣成的注释 true:是: false:否 --><property name="suppressAllComments" value="true"/><property name="suppressDate" value="true"/></commentGenerator><!--数据库连接的信息:驱动类、连接地址、⽤户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://39.108.217.125:3306/RoboBlogs" userId="root"password="HZBhzb1237763522-1"></jdbcConnection><!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </jdbcConnection> --><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- targetProject:⽣成PO类的位置 --><javaModelGenerator targetPackage="com.Mybaits.pojo"targetProject=".\src\main\java"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false"/><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true"/></javaModelGenerator><!-- targetProject:mapper映射⽂件⽣成的位置 --><sqlMapGenerator targetPackage="com.Mybaits.mapper"targetProject=".\src\main\java"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- targetPackage:mapper接⼝⽣成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.Mybaits.mapper" targetProject=".\src\main\java"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false"/></javaClientGenerator><!-- 指定数据库表保留Example例⼦ --><table schema="" tableName="u01" domainObjectName="u01"/><table schema="" tableName="Upload_info" domainObjectName="Upload_info"/><table schema="" tableName="Upload_UserPushContent" domainObjectName="Upload_UserPushContent"/><!-- 指定数据库表去除Example例⼦<table schema="general" tableName="tb_item" domainObjectName="Item"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="true"selectByExampleQueryId="false"><property name="useActualColumnNames" value="false" /></table> --></context></generatorConfiguration>3.1、运⽤maven指令⽣成逆向⼯程代码3.2、使⽤单元测试⽣成逆向⼯程代码:package MybaitsGenerator;import java.io.File;import java.io.IOException;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.exception.InvalidConfigurationException;import org.mybatis.generator.exception.XMLParserException;import org.mybatis.generator.internal.DefaultShellCallback;import org.junit.Test;public class MybaitsGeneratorTest {@Testpublic void MybaitsGenerator() throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException{ List<String> warnings = new ArrayList<String>();boolean overwrite = true;//加载上⾯的配置⽂件File configFile = new File("./src/main/resources/generatorconfig.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);}}4.刷新页⾯,效果如:。
自-自定义myeclipse逆向工程模板的代码自动生成规则
在项目中,往往会用到myeclipse的自动生成代码功能,比如本人项目用其从数据库表生成对应的实体类和映射文件,但是,由于数据库表字段名称很不规范,无业务含义很难认,用myeclipse默认的规则生成得到的实体属性名是驼峰命名,很难由此推断出对应的数据库表字段名,故项目制定统一规范,实体类属性名为表字段名小写。
需要修改默认的代码生成规则。
网上找了不少资料以及文档,方法总结如下:方法一:修改myeclipse中自动生成代码的模板文件在myeclipse目录中搜索关键字"templates",可以找到一个如myeclipse_tem plates_6.0.1GA.zip的包,解压即可得到自动生成代码用到的所有模板文件,如需修改其中几个模板文件,则按原目录结构只留下修改的模板文件。
在Hibernate Reverse-Engineering的对话框中,钩选Use customtemplates,输入你存放修改后模板文件的文件夹(custom_myeclipse_templates)路径,就可以使用到自定义的模板了。
具体看参考该包的说明文档。
方法二:集成并自定义反转策略类自定义一个类,继承自org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy,覆盖其中生成代码的方法。
具体参考方法一中那个包的说明文档。
我把其中一个例子贴出来如下,在自动生成的所有实体属性名前加"ME_"前缀下:5.6sing a custom reverse engineeringstrategyAdd theMyEclipsePersistence Tools library to your project.Right clickyour project and select Properties.On the Java Build Path page, chooseAddLibrary...ontheLibrariestab.ChooseMyEclipse Libraries andthenMyEclipsePersistence Tools.PressFinish.1Figure 16.Adding the MyEclipsePersistence Toolslibrary2Create a new class in yourprojectwhich extends theorg.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy class.3Define the singleargument constructor and override amethodofinterest, for example,columnToPropertyName.ﻫHere's anexample which prefixes all generated propertes with"ME_"ﻫMyStrategy.javapackage com.genuitec.hibernate;import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;importorg.hibernate.cfg.reveng.ReverseEngineeringStrategy;importorg.hibernate.cfg.reveng.T ableIdentifier;public classMyStrategy extends DelegatingReverseEngineeringStrategy {public MyStrategy(ReverseEngineeringStrategystrategy) {super(strategy);ﻫ} ﻫpublic String columnT oPropertyName(TableIdentifiertable, StringcolumnName){return"ME_" + super.columnToPropertyName(table, columnName);}ﻫﻫ}Figure 17. MyStrategy.java Source CodeListingﻫOn page2of the reverse engineeringwizard, specifythe classyoujust createdﻫﻫFigure 18. Specifying thereverse engineeringstrategy附资料一:自定义Struts的JSP模板和Hibernate的DAO模板这一阵子在MyEclipse里做项目,用到了Struts和hibernate功能,起初,对自动生成赞不绝口,但后来,发现自动生成的代码也有不方便的地方,比如:一Strutsﻫ当new一个JSP,使用Standard JSP using Struts 1.2时,生成的页面代码中只包含了Struts标签但很多时候,我们需要在页面中使用到JSTL标签,我们应该把常用的几个JSTL标签加到JSP页面中,就像这样:ﻫﻫ其次,Struts1.2的似乎有些问题,它表示的地址是当前页面的地址,而不是应用程序的根目录,因此,这个base我们还是得用内嵌的Java代码得到,就像这样:ﻫString path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":" +request.getServerP ort()+path+"/";ﻫ然后在之间加入base标签:ﻫ这样,用起来才比较方便一点但每次都改页面,显然做了很多重复的劳动,我想MyEclipse 在生成这样的页面时,肯定用到了模板那么到底是那个模板呢?我们来搜搜看ﻫ首先说明一下,我用的不是MyEclipse的All-In-One安装,所以有两个目录,一个是Eclipse的解压目录,另一个才是MyEclipse的安装目录:MyEclipse 5.5.1GA如果用的All-In-One安装,可能只有一个目录,就是MyEclipse 5.5.1 GA这里,我就把这个目录称为安装目录了ﻫﻫ在安装目录下搜索:Struts-1_2.vtl,可以得到这个文件,打开看看,其头部结构与生成的页面很相似,因此,我们只需要在适当的地方添上自己的代码即可修改前还是要注意备份ﻫ二hibernateﻫ使用Hibernate Reverse Engineering最大的好处就是它可以自动生成PO和DAO的源码,以及映射配置文件但是看看DAO的代码,才发现里面的数据库操作方法都是实例方法,用起来还必须先new一个DAO,个人觉得没有这个必要,使用静态方法就可以了,但我不可能给每个DAO的每个方法都加一个static吧于是,跟上面一样,改模板ﻫ首先得分析一下,生成的DAO是继承的BaseHibernateDAO,而BaseHibernateDAO是扩展的IBaseHibernateDAO接口,在这个接口中,定义了getSession方法要把数据库操作方法改成static,这个getSession方法也必须是static,但是在接口中不能定义是static的方法,那么唯一的办法就是不管IBaseHibernateDAO接口,在Ba seHibernateDAO类中自己实现一个静态的getSession方法BaseHibernateDAO有模板文件,但是没有必要改它,因为一个工程只用得到一个BaseH ibernateDAO我们要改的模板文件是用于生成具体DAO类的然而在安装目录下用hibernate关键字搜一搜,并没有发现哪个文件与我们的DAO有关,难道MyEclipse把生成规则写死在代码里了吗?ﻫ我不相信MyEclipse的开发人员那么糊涂,于是用templates关键字搜索了一下,发现了这个:myeclipse_templates_5.5GA.zip,打开一点,发现里面全部是有关hiber nate的模板文件,另外有一个readme的说明,关键部分如下:ﻫ2) Edit the velocity templates you wish tocustomize.Note: POJO templates are present in the pojofolder DAO template in the dao folder HBM templates in the hbmfolder3) Optional: Though notnecessary, it is recommendedthat youdelete the velocitytemplatesyoudo not planto customize. This willprevent future confusion overwhich templatesare being processed by MyEclipse.4)InvoketheJPA/EJB3/Hibernate R everse-Engineering wizardand select "Usecustom templates". Manua lly enteror clickthe browse buttontoselectthemyeclipse_templates_5.5GA folder.上面的意思是:把解压之后的文件夹放在一个方便的地方(不需要放在原目录下,那样找起来很不方便),修改它,然后删掉其他你没有修改的文件,以免发生可能的冲突,最后,在Hi bernate Reverse-Engineering的对话框中,钩选Use customtemplates,输入你解压后的文件夹(myeclipse_templates_5.5GA)路径,就可以使用到自定义的模板了ﻫ照这个意思,我修改了DAO文件夹下的daohome.vm和facadeif.vm,在其中所有的public标识后加上了static(我也不知道哪些是hibernatet真正用到的,反正我不用EJ B和JPA)然后照它的意思试了一把,果然,DAO方法全变成了static附资料二:Hibernate Reverse Engineering向导ﻫﻫJava src folder 选中映射文件, POJ O和DAO 生成后所在的项目和源码文件夹.Java package映射文件, POJO 和DAO生成后所在的包.Hibernate mapping file 从选中的表格生成映射文件.Update hibernate configuration 将生成后的映射文件添加到Hibernate 配置文件中.Java Data Object 为映射文件和表格生成对应的数据对象(POJO).ﻫCreate abstract class 为每个数据对象生成一个抽象的父类. 这个抽象类将在以后的重新生成过程中覆盖掉, 但是对应的子类将不会被覆盖掉.ﻫBase persistence class 如果需要的话,输入生成的POJO 所要集成的父类的完整名称.ﻫJavaData Access Object 生成便于访问映射后的类和表格的数据访问对象. 用户可以在Basic,Spring 和JNDI DAO中选择一种.ﻫGenerate precise findBy methods 为映射类中的每个属性生成一个"findBy" 方法.例如findByFirstName("nam e");Usecustomtemplates覆盖MyEclipse 的内部velocity 模版为你自己的版本.参考使用模版来更好的调节生成的代码来获取更多信息.Template directory 包含了自定义模版的目录树的根节点.ﻫﻫ图14.Hibernat eReverse Engineering 向导-第2 页第2 页可以使用默认的设置, 选择Next.ﻫ表5- Hibernate Reverse Engineering 向导- 第2页ﻫRev-engsettings file 这个文件包含了反向工程的配置和选项以供以后使用. 点击Setup... 按钮来选择现有的文件或者创建一个新的文件.如果找不到一个这样的配置文件的话向导将会自动创建此文件.ﻫCustom rev-eng strategy 允许你指定一个自定义的反向工程策略类.这个类允许你用编程的方式来自定义反向工程处理过程的各个方面. 参考使用自定义反向工程策略来获取详细信息.ﻫTypeMapping决定是否在类型映射属性中使用Java或者Hibernate 类型, 例如java.lang.String对应st ring. 这个设置只能在向导第 3 页的Customized Type Mappings列表中没有指定更多信息时才能使用.ﻫID Generator IDGenerator 是Hibernate 映射文件必须有的内容. 它定义了持久类实例的唯一主键生成器Jaav类. 参考资源部分里面的Hibernate 文档链接,里面描述了每个ID 生成器的详细信息.如果留空或者更详细的配置在这个向导的第 3 页没有配置, Hibernate映射引擎将自动为你选择一个ID 生成器.ﻫGenerate basic typed composite IDs 如果数据库表格包含有多个列的主键, 将总是使用<复合主键>映射.如果这个选项启用并且有对应的多个外键,每个主键列将依然会被作为'简单的' 标量(string, long, 等),而不是引用到一个实体.将会创建<many-to-one> 元素, 但是它们将会标记为非可更新和非可插入的字段.如果你禁用这个选项(默认推荐用这种方式),将会创建<key-many-to-one> 元素来代替上面的生成内容.ﻫGenerateversion and timestamp tags 如果启用, 名为"version"和"timestamp" 的列将会在生成的映射文件中作为<version>和<timestamp> 标记出现.CustomizedType Mappings允许你来指定一个自定义的JDBC 类型到Hibern ate 类型的转换, 使用Length,Scale, Precision 和Nullability 作为精度控制对应原来的JDBC 类型.# 再第3 页页可以使用默认的设置, 选择Finish 将启动反向工程处理.图15.HibernateReverse Engineering 向导- 第3页ﻫ表6 - Hibernate Reverse Engineering向导-第3页ﻫClass name 对应当前数据库表格的数据对象类的完整名称.ﻫIDGenerator 想要对当前表所使用的ID生成器.JDBC type对当前列所使用的JDBC 类型覆盖.Property name 对应当前列所生成的属性名.ﻫHibernatetype 对应当前列的Hibernate 类型.Includereferenced /referencing tables包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表.Generatesupport for ListedTable(fk)->UnlistedTableand Unlisted Table(fk)->ListedTable生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示.在这个向导完成之后将会进行下面所列的操作:ﻫ*创建类AbstractEchoMessage .这个抽象类提供了所需的Hibernate 兼容的功能例如public 的读取器和设置器方法, 这些方法对应的持久化属性和ECHO_MESSAGE数据库表格中的列相对应.*创建了一个EchoMessageJava 类, 是AbstractEchoMessage 类的一个具体的子类. EchoMessage 的目的是为了被修改后提供额外的业务和验证逻辑,并且不会被后续的生成代码过程所覆盖.*创建了EchoMessage.hbm.xml Hibernate 映射描述符. 这个文件指示Hibernate 如何将EchoMessage Java类和ECHO_MESSAGE数据库表格中的数据相互映射.ﻫ*在文件hibernate.cfg.xml 中注册EchoMessage.hbm.x ml映射描述符.*创建了Java类EchoMessageDAO. 这个类提供了对EchoMessage 数据对象类的方便的访问和操作.ﻫ*创建IBaseHibernateDAO 接口和BaseHibernateDAO类. 这些类对基本的DAO 来说是必要的,因为它使用了添加Hibernate功能时候所生成的Session 工厂类(com.genuitec.hibernate.HibernateSe ssionFactory)来获取Hibernate 会话.ﻫ图15 高亮显示了所生成的类, 关键方法和映射文件,以及被添加到hibernate.cfg.xml 文件中的对生成的映射文件的引用.图15. Hibernate 反向工厂向导执行结束后更新过的项目内容5.5使用模版调整生成更好的代码* e.doc/html/quickstarts/hibernate/myeclipse_templates_5.5GA.zip">这个文件到你的电脑的文件系统上.ﻫ* 按照README.txt文件中的说明来自定义这个模版.ﻫ * 调用反向工程向导, 在第1页选择启用Usecustom templates选项,然后将Templatedirectory 指向到包含模版树的文件夹e.ﻫ5.6 使用自定义反向工程策略1 ﻫ. 向你的项目中添加MyEclipse Persistence Tools 类库.ﻫ * 右键点击你的项目然后选择Properties.ﻫ * 在Java Build Path 页面,在Libraries 面板下选择Add Library....* 选择MyEclipse Libraries,接着选中MyEclipsePersistenceTools.*点击Finish.ﻫ图16. 添加MyEclipse Persistence Tools 类库2. 在你的项目中创建一个新类, 让这个类继承自org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 类.3 ﻫ. 定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法,例如,columnToPropertyName. 这里是一个例子, 将在所有生成的属性前添加一个"ME_" 前缀.MyStrategy.javaﻫpackage com.genuitec.hibernate;importorg.hibernate.cfg.reveng.DelegatingReverseEngineeringStrat egy;importorg.hibernate.cfg.reveng.ReverseEngineeringStrategy; import org.hibernate.cfg.reveng.T ableIdentifier;public classMyStrategy extends DelegatingReverseEngineeringStrategy{ﻫpublicMyStrategy(ReverseEngineeringStrategy strategy) {ﻫsuper (strategy);}ﻫpublicString columnToPropertyName(TableIdentifier table, St ring columnName) {return"ME_" + super.columnToPropertyName(table, columnN ame);}}ﻫﻫ图17. MyStrategy.java 源代码清单4 ﻫ.在反向工程向导的第2 页, 选中刚才所创建的类图18. 指定反向工程策略ﻫ5.7 编辑映射文件ﻫMyEclipse 包含了定制过的XML 编辑器来专门用于修改Hibernate 映射文件(*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开.你也可以通过右键点击文件然后选择Open With > MyEclipseHibernate Mapping Editor.功能ﻫﻫ* 超链接浏览到引用到的类和属性.* 类名自动完成提示.ﻫ*属性名自动完成提示.ﻫ * 映射文件元素, 属性和值的内容完成提示.ﻫ图19.Hibernate 映射文件编辑器。
mybatis自动生成代码工具(逆向工程)
mybatis⾃动⽣成代码⼯具(逆向⼯程)
MyBatis⾃动⽣成实体类(逆向⼯程)
MyBatis属于⼀种半⾃动的ORM框架,它需要我们⾃⼰编写sql语句和映射⽂件,但是编写映射⽂件和sql语句很容易出错,所以mybatis官⽅提供了Generator⽣成器,⾃动⽣成DAO接⼝。
实体类和Mapping。
这个⽣成器是根据单表⾃动⽣成mybatis执⾏所需要的代码,因此,⾸先得先创建数据库表,然后再⾃动⽣成代码。
————————默认已经设计好数据库和表(如果未设计数据和表请先设计数据库和表)
1.通过代码⽣成器⾃动⽣成代码
2.解压,打开它的lib⽬录
3.lib⽬录下包含了代码⽣成器⽣成代码所需要的mybatis和mysql的jar包
4.要做的就是修改generatorConfig.xml⽂件
5.把上⾯⽂件注释下⾯的内容修改为⾃⼰⼯程相关的内容就可以了
6.⽂件修改完以后,需要通过控制台来执⾏脚本⽣成代码(也可以在lib⽬录下按住shift+⿏标右键选择在此处打开powershell窗⼝)
打开控制台,进⼊lib⽬录下执⾏ java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
7.执⾏成功以后会在你⾃⼰定义的⽂件⽬录下⽣成相关的代码。
mybatis根据表逆向自动化生成代码
mybatis根据表逆向⾃动化⽣成代码⾃动⽣成代码总结(1)——(mybatis⾃动⽣成实体类、mapper⽂件、mapper.xml⽂件) 若采⽤mybatis框架,数据库新建表,⼿动编写的话,需要编写⼤量的实体类、mapper⽂件、mapper.xml⽂件,都是⼀些重复且有规律的⼯作。
我们可以引⽤插件,然后做配置,⾃动⽣成这些⽂件,提供⼯作效率。
本博客包含的内容: ①⾃动⽣成插件的引⼊ ②定义配置⽂件 ③运⾏插件,⽣成代码 在项⽬的pom⽂件中引⼊generator插件<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><!-- 配置⽂件存放路径 --><configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!-- mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.4.1</version></dependency></dependencies></plugin> 注:generatorConfig.xml ⼀定要放在pom中插件配置的路径下。
在IDEA中使用MyBatisGenerator逆向工程生成代码
在IDEA中使⽤MyBatisGenerator逆向⼯程⽣成代码本⽂介绍⼀下⽤Maven⼯具如何⽣成Mybatis的代码及映射的⽂件。
⼀、配置Maven pom.xml ⽂件在pom.xml增加以下插件:<build><finalName>zsxt</finalName><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin></plugins></build>配置好Maven插件,下⾯需要配置插件需要配置⽂件⼆、在maven项⽬下的src/main/resources ⽬录下建⽴名为 Maven的项⽬配置⽂件存放路径如下图:generatorConfig.xml和generator.properties配置⽂件,Maven的项⽬配置⽂件存放路径如下图:generatorConfig.xml代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--导⼊属性配置--><properties resource="generator.properties"></properties><!--指定特定数据库的jdbc驱动jar包的位置--><classPathEntry location="${jdbc.driverLocation}"/><context id="default" targetRuntime="MyBatis3"><!-- optional,旨在创建class时,对注释进⾏控制 --><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!--jdbc的数据库连接 --><jdbcConnectiondriverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}"userId="${erId}"password="${jdbc.password}"></jdbcConnection><!-- ⾮必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- Model模型⽣成器,⽤来⽣成含有主键key的类,记录类以及查询Example类targetPackage 指定⽣成的model⽣成所在的包名targetProject 指定在该项⽬下所在的路径--><javaModelGenerator targetPackage="com.ssm.test.model"targetProject="src/main/java"><!-- 是否允许⼦包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加构造函数 --><property name="constructorBased" value="true"/><!-- 是否对类CHAR类型的列的数据进⾏trim操作 --><property name="trimStrings" value="true"/><!-- 建⽴的Model对象是否不可改变即⽣成的Model对象不会有 setter⽅法,只有构造⽅法 --><property name="immutable" value="false"/></javaModelGenerator><!--Mapper映射⽂件⽣成所在的⽬录为每⼀个数据库的表⽣成对应的SqlMap⽂件 --><sqlMapGenerator targetPackage="com.ssm.test.mapper"targetProject="src/main/java"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 客户端代码,⽣成易于使⽤的针对Model对象和XML配置⽂件的代码type="ANNOTATEDMAPPER",⽣成Java Model 和基于注解的Mapper对象type="MIXEDMAPPER",⽣成基于注解的Java Model 和相应的Mapper对象type="XMLMAPPER",⽣成SQLMap XML⽂件和独⽴的Mapper接⼝--><javaClientGenerator targetPackage="com.ssm.test.dao"targetProject="src/main/java" type="XMLMAPPER"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--tableName:指定了表名domainObjectName:指定了实体类的名称--><table tableName="user" domainObjectName="user"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table></context></generatorConfiguration> generator.propertites代码如下:jdbc.driverLocation=D:\\IdeaProjects\\mybatisnixiangPro\\mavenSeting&res\\Repository\\mysql-conn\\mysql-connector-java-5.1.30.jar jdbc.driverClass=com.mysql.jdbc.Driverjdbc.connectionURL=jdbc:mysql:///vlinksongjntesterId=rootjdbc.password=三、在Intellij IDEA添加⼀个“Run运⾏”选项,使⽤maven运⾏mybatis-generator-maven-plugin插件点击菜单run中Edit Configurations,会出现点击+号,选择maven,会出现在name和Commond line分别填上如上图所⽰,apply和ok 最后点击generator,⽣成model,mapper,dao逆向⼯程⽣成结果如下:由于之前配置出现⼀些问题,所以找了⼀份generatorConfig.xml配置的详解:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><!-- 配置⽣成器 --><generatorConfiguration><!-- 可以⽤于加载配置项或者配置⽂件,在整个配置⽂件中就可以使⽤${propertyKey}的⽅式来引⽤配置项resource:配置资源加载地址,使⽤resource,MBG从classpath开始找,⽐如com/myproject/generatorConfig.propertiesurl:配置资源加载地质,使⽤URL的⽅式,⽐如file:///C:/myfolder/generatorConfig.properties.注意,两个属性只能选址⼀个;另外,如果使⽤了mybatis-generator-maven-plugin,那么在pom.xml中定义的properties都可以直接在generatorConfig.xml中使⽤<properties resource="" url="" />--><!-- 在MBG⼯作的时候,需要额外加载的依赖包location属性指明加载jar/zip包的全路径<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />--><!--context:⽣成⼀组对象的环境id:必选,上下⽂id,⽤于在⽣成错误时提⽰defaultModelType:指定⽣成对象的样式1,conditional:类似hierarchical;2,flat:所有内容(主键,blob)等全部⽣成在⼀个对象中;3,hierarchical:主键⽣成⼀个XXKey对象(key class),Blob等单独⽣成⼀个对象,其他简单属性在⼀个对象中(record class)targetRuntime:1,MyBatis3:默认的值,⽣成基于MyBatis3.x以上版本的内容,包括XXXBySample;2,MyBatis3Simple:类似MyBatis3,只是不⽣成XXXBySample;introspectedColumnImpl:类全限定名,⽤于扩展MBG--><context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple"><!-- ⾃动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;⼀般保留默认值,遇到数据库关键字(Java关键字),使⽤columnOverride覆盖--><property name="autoDelimitKeywords" value="false"/><!-- ⽣成的Java⽂件的编码 --><property name="javaFileEncoding" value="UTF-8"/><!-- 格式化java代码 --><property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/><!-- 格式化XML代码 --><property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/><!-- beginningDelimiter和endingDelimiter:指明数据库的⽤于标记数据库对象名的符号,⽐如ORACLE就是双引号,MYSQL默认是`反引号; --> <property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!-- 必须要有的,使⽤这个配置链接数据库@TODO:是否可以扩展--><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///pss" userId="root" password="admin"><!-- 这⾥⾯可以设置property属性,每⼀个property属性都设置到配置的Driver上 --></jdbcConnection><!-- java类型处理器⽤于处理DB中的类型到Java中的类型,默认使⽤JavaTypeResolverDefaultImpl;注意⼀点,默认会先尝试使⽤Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;--><javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl"><!--true:使⽤BigDecimal对应DECIMAL和 NUMERIC数据类型false:默认,scale>0;length>18:使⽤BigDecimal;scale=0;length[10,18]:使⽤Long;scale=0;length[5,9]:使⽤Integer;scale=0;length<5:使⽤Short;--><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- java模型创建器,是必须要的元素负责:1,key类(见context的defaultModelType);2,java类;3,查询类targetPackage:⽣成的类要放的包,真实的包受enableSubPackages属性控制;targetProject:⽬标项⽬,指定⼀个存在的⽬录下,⽣成的内容会放到指定⽬录中,如果⽬录不存在,MBG不会⾃动建⽬录--><javaModelGenerator targetPackage="com._520it.mybatis.domain" targetProject="src/main/java"><!-- for MyBatis3/MyBatis3Simple⾃动为每⼀个⽣成的类创建⼀个构造⽅法,构造⽅法包含了所有的field;⽽不是使⽤setter;--><property name="constructorBased" value="false"/><!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false --><property name="enableSubPackages" value="true"/><!-- for MyBatis3 / MyBatis3Simple是否创建⼀个不可变的类,如果为true,那么MBG会创建⼀个没有setter⽅法的类,取⽽代之的是类似constructorBased的类--><property name="immutable" value="false"/><!-- 设置⼀个根对象,如果设置了这个根对象,那么⽣成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新⽣成这些属性了,包括:1,属性名相同,类型相同,有相同的getter/setter⽅法;--><property name="rootClass" value="com._520it.mybatis.domain.BaseDomain"/><!-- 设置是否在getter⽅法中,对String类型字段调⽤trim()⽅法 --><property name="trimStrings" value="true"/></javaModelGenerator><!-- ⽣成SQL map的XML⽂件⽣成器,注意,在Mybatis3之后,我们可以使⽤mapper.xml⽂件+Mapper接⼝(或者不⽤mapper接⼝),或者只使⽤Mapper接⼝+Annotation,所以,如果 javaClientGenerator配置中配置了需要⽣成XML的话,这个元素就必须配置targetPackage/targetProject:同javaModelGenerator--><sqlMapGenerator targetPackage="com._520it.mybatis.mapper" targetProject="src/main/resources"><!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false --><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- 对于mybatis来说,即⽣成Mapper接⼝,注意,如果没有配置该元素,那么默认不会⽣成Mapper接⼝targetPackage/targetProject:同javaModelGeneratortype:选择怎么⽣成mapper接⼝(在MyBatis3/MyBatis3Simple下):1,ANNOTATEDMAPPER:会⽣成使⽤Mapper接⼝+Annotation的⽅式创建(SQL⽣成在annotation中),不会⽣成对应的XML;2,MIXEDMAPPER:使⽤混合配置,会⽣成Mapper接⼝,并适当添加合适的Annotation,但是XML会⽣成在XML中;3,XMLMAPPER:会⽣成Mapper接⼝,接⼝完全依赖XML;注意,如果context是MyBatis3Simple:只⽀持ANNOTATEDMAPPER和XMLMAPPER--><javaClientGenerator targetPackage="com._520it.mybatis.mapper" type="ANNOTATEDMAPPER" targetProject="src/main/java"><!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false --><property name="enableSubPackages" value="true"/><!-- 可以为所有⽣成的接⼝添加⼀个⽗接⼝,但是MBG只负责⽣成,不负责检查<property name="rootInterface" value=""/>--></javaClientGenerator><!-- 选择⼀个table来⽣成相关⽂件,可以有⼀个或多个table,必须要有table元素选择的table会⽣成⼀下⽂件:1,SQL map⽂件2,⽣成⼀个主键类;3,除了BLOB和主键的其他字段的类;4,包含BLOB的类;5,⼀个⽤户⽣成动态查询的条件类(selectByExample, deleteByExample),可选;6,Mapper接⼝(可选)tableName(必要):要⽣成对象的表名;注意:⼤⼩写敏感问题。
EclipsemyEclipse代码提示自动提示自动完成设置(转)
EclipsemyEclipse代码提⽰⾃动提⽰⾃动完成设置(转)⼀、设置超级⾃动提⽰设置eclipse/myEclipse代码提⽰可以⽅便开发者,不⽤在记住拉杂的单词,只⽤打出⾸字母,就会出现提⽰菜单。
如同dreamweaver⼀样⽅便。
1.菜单window->Preferences->Java->Editor->Content Assist-右边-auto-activaction栏下-Enable auto activation 选项要打上勾2.Auto Activation triggers for java 后⾯直接写⼊(新版eclipse可以直接写⼊长字符)“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,([{”3.设置反映时间,Auto activation delay 默认为200,⼀般设置为20~504.*此时设置完还没有达到超级提⽰,软件对类和接⼝还有很好的提⽰。
4.继续设置window->Preferences->Java->Editor->Content Assist展开->Advanced 上⾯的选项卡Select the proposal kinds contained in the 'default'content assist list: 中把7个选项全部勾上!此时设置结束,⽆论是语句,类,接⼝,关键字,还是⽅法,都能⾃动提⽰。
⼆.取消Myeclipse代码提⽰时按空格或“=”⾃动补全第⼀个提⽰词的功能按照如上设置后会出现问题:⽐如我想输⼊Conn按空格后会按提⽰的第⼀个Connection。
此时操作"空格键"还有"等号键"都会默认选中提⽰项的第⼀项.⽅案⼀:每次出现你不想要填充的提⽰词时,可以按⼀下Esc,即可以取消提⽰词,之后再按空格或者“=”不会⾃动补全。
逆向工程__Generate插件安装xml配置文件解析使用反向生成代码接口说明
逆向⼯程__Generate插件安装xml配置⽂件解析使⽤反向⽣成代码接⼝说明逆向⼯程通过数据库中的单表,⾃动⽣成java代码。
Mybatis官⽅提供了逆向⼯程,可以针对单表⾃动⽣成mybatis代码(mapper.java\mapper.xml\pojo类),实现了ORM,对象关系映射。
Generate插件在eclipse中安装Generate插件下载安装就是下⼀步那种或者在pom.xml⽂件中添加mybatis的generator插件<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><!--关联上⾯的配置⽂件 --><configurationFile>src/main/resources/mybatis-generator/generatorConfig-sys.xml</configurationFile><verbose>true</verbose><overwrite>true</overwrite></configuration><executions><execution><id>Generate MyBatis Artifacts</id><goals><goal>generate</goal></goals></execution></executions><dependencies><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency></dependencies></plugin>创建逆向⼯程项⽬类型没有限制,可以是java项⽬也可以是web项⽬,或者maven项⽬都可以。
使用Eclipse(MyEclipse)+abator自动生成iBatis代码以及配置文...
使用Eclipse(MyEclipse)+abator自动生成iBatis代码以及配置文...从下载Eclipse Plugin。
插件一共有2种安装方式,在网页上都有介绍。
2、新建一个Eclipse项目,项目名称为myibatis,然后选择文件>新建>ABator for iBatis configuration File,选择Location,并且键入File Name:abatorCsonfig.xml。
字串63、点击“完成”,Eclipse会在程序根目录下建立abatorCsonfig.xml文件,打开编辑它,内容如下:字串7<?xml version="1.0" encoding="UTF-8"?>字串8<!DOCTYPE abatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN" 字串5"/dtd/abator-config_1_0.dtd">字串4字串2<abatorConfiguration>字串5<abatorContext> <!-- TODO: Add Database Connection Information -->字串3<jdbcConnection driverClass="oracle.jdbc.OracleDriver"字串2connectionURL="jdbc:oracle:thin:@210.11.11.11:1521:iisg" 字串1userId="test"字串5password=" test ">字串2<classPathEntry location="D:/project/jar/classes12.jar" />字串5</jdbcConnection>字串5字串1<javaModelGenerator targetPackage="com.soho.model" 字串7targetProject="myibatis/src" />字串2<sqlMapGenerator targetPackage="com. soho.map" targetProject="myibatis/src" />字串1<daoGenerator type="IBATIS" targetPackage="com. soho.dao"字串6targetProject="myibatis/src" /> 字串7<table catalog="thibernate" schema="thibernate" tableName="taddress" domainObjectName="TAddress"> 字串4</table>字串4</abatorContext>字串5</abatorConfiguration> 字串64、注意<table catalog="test" schema="test" tableName="taddress"domainObjectName="TAddress"></table>中的catalog="test"schema="test",这个一定要写上,不然会报错的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在项目中,往往会用到myeclipse的自动生成代码功能,比如本人项目用其从数据库表生成对应的实体类和映射文件,但是,由于数据库表字段名称很不规范,无业务含义很难认,用myeclipse默认的规则生成得到的实体属性名是驼峰命名,很难由此推断出对应的数据库表字段名,故项目制定统一规范,实体类属性名为表字段名小写。
需要修改默认的代码生成规则。
网上找了不少资料以及文档,方法总结如下:方法一:修改myeclipse中自动生成代码的模板文件在myeclipse目录中搜索关键字"templates",可以找到一个如myeclipse_templates_6.0.1GA.zip的包,解压即可得到自动生成代码用到的所有模板文件,如需修改其中几个模板文件,则按原目录结构只留下修改的模板文件。
在Hibernate Reverse-Engineering的对话框中,钩选Use custom templates,输入你存放修改后模板文件的文件夹(custom_myeclipse_templates)路径,就可以使用到自定义的模板了。
具体看参考该包的说明文档。
方法二:集成并自定义反转策略类自定义一个类,继承自org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy,覆盖其中生成代码的方法。
具体参考方法一中那个包的说明文档。
我把其中一个例子贴出来如下,在自动生成的所有实体属性名前加"ME_"前缀下:5.6 sing a custom reverse engineering strategyAdd 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 Persistence Tools. Press Finish.1Figure 16. Adding the MyEclipse Persistence T ools library2Create a new class in your project which extends the org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy class.3Define the single argument constructor and override a method of interest, for example, columnToPropertyName.Here's an example which prefixes all generated propertes with "ME_" MyStrategy.javapackage com.genuitec.hibernate;import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy; import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;import org.hibernate.cfg.reveng.T ableIdentifier;public class MyStrategy extends DelegatingReverseEngineeringStrategy {public MyStrategy(ReverseEngineeringStrategystrategy) {super(strategy);}public String columnT oPropertyName(TableIdentifier table, String columnName) {return"ME_" + super.columnT oPropertyName(table, columnName);}}Figure 17. MyStrategy.java Source Code ListingOn page 2 of the reverse engineering wizard, 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标签但很多时候,我们需要在页面中使用到JSTL标签,我们应该把常用的几个JSTL 标签加到JSP页面中,就像这样:其次,Struts1.2的似乎有些问题,它表示的地址是当前页面的地址,而不是应用程序的根目录,因此,这个base我们还是得用内嵌的Java代码得到,就像这样:String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":" +request.getServerPort()+path+"/";然后在之间加入base标签:这样,用起来才比较方便一点但每次都改页面,显然做了很多重复的劳动,我想MyEclipse 在生成这样的页面时,肯定用到了模板那么到底是那个模板呢?我们来搜搜看首先说明一下,我用的不是MyEclipse的All-In-One安装,所以有两个目录,一个是Eclipse 的解压目录,另一个才是MyEclipse的安装目录:MyEclipse 5.5.1 GA如果用的All-In-One 安装,可能只有一个目录,就是MyEclipse 5.5.1 GA这里,我就把这个目录称为安装目录了在安装目录下搜索:Struts-1_2.vtl,可以得到这个文件,打开看看,其头部结构与生成的页面很相似,因此,我们只需要在适当的地方添上自己的代码即可修改前还是要注意备份二hibernate使用Hibernate Reverse Engineering最大的好处就是它可以自动生成PO和DAO的源码,以及映射配置文件但是看看DAO的代码,才发现里面的数据库操作方法都是实例方法,用起来还必须先new一个DAO,个人觉得没有这个必要,使用静态方法就可以了,但我不可能给每个DAO的每个方法都加一个static吧于是,跟上面一样,改模板首先得分析一下,生成的DAO是继承的BaseHibernateDAO,而BaseHibernateDAO是扩展的IBaseHibernateDAO接口,在这个接口中,定义了getSession方法要把数据库操作方法改成static,这个getSession方法也必须是static,但是在接口中不能定义是static的方法,那么唯一的办法就是不管IBaseHibernateDAO 接口,在BaseHibernateDAO类中自己实现一个静态的getSession方法BaseHibernateDAO有模板文件,但是没有必要改它,因为一个工程只用得到一个BaseHibernateDAO我们要改的模板文件是用于生成具体DAO类的然而在安装目录下用hibernate关键字搜一搜,并没有发现哪个文件与我们的DAO有关,难道MyEclipse把生成规则写死在代码里了吗?我不相信MyEclipse的开发人员那么糊涂,于是用templates关键字搜索了一下,发现了这个: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, 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 browse button to select the myeclipse_templates_5.5GA folder.上面的意思是:把解压之后的文件夹放在一个方便的地方(不需要放在原目录下,那样找起来很不方便),修改它,然后删掉其他你没有修改的文件,以免发生可能的冲突,最后,在Hibernate Reverse-Engineering的对话框中,钩选Use custom templates,输入你解压后的文件夹(myeclipse_templates_5.5GA)路径,就可以使用到自定义的模板了照这个意思,我修改了DAO文件夹下的daohome.vm和facadeif.vm,在其中所有的public 标识后加上了static(我也不知道哪些是hibernatet真正用到的,反正我不用EJB和JPA)然后照它的意思试了一把,果然,DAO方法全变成了static附资料二:Hibernate Reverse Engineering 向导Java src folder 选中映射文件, POJO 和DAO 生成后所在的项目和源码文件夹.Java package 映射文件, POJO 和DAO 生成后所在的包.Hibernate mapping file 从选中的表格生成映射文件.Update hibernate configuration 将生成后的映射文件添加到Hibernate 配置文件中. Java Data Object 为映射文件和表格生成对应的数据对象(POJO).Create abstract class 为每个数据对象生成一个抽象的父类. 这个抽象类将在以后的重新生成过程中覆盖掉, 但是对应的子类将不会被覆盖掉.Base persistence class 如果需要的话, 输入生成的POJO 所要集成的父类的完整名称. Java Data Access Object 生成便于访问映射后的类和表格的数据访问对象. 用户可以在Basic, Spring 和JNDI DAO 中选择一种.Generate precise findBy methods 为映射类中的每个属性生成一个"findBy" 方法. 例如findByFirstName("name");Use custom templates 覆盖MyEclipse 的内部velocity 模版为你自己的版本.参考使用模版来更好的调节生成的代码来获取更多信息.Template directory 包含了自定义模版的目录树的根节点.图14. Hibernate Reverse Engineering 向导- 第2 页第2 页可以使用默认的设置, 选择Next.表5 - Hibernate Reverse Engineering 向导- 第2 页Rev-eng settings file 这个文件包含了反向工程的配置和选项以供以后使用. 点击Setup... 按钮来选择现有的文件或者创建一个新的文件.如果找不到一个这样的配置文件的话向导将会自动创建此文件.Custom rev-eng strategy 允许你指定一个自定义的反向工程策略类. 这个类允许你用编程的方式来自定义反向工程处理过程的各个方面. 参考使用自定义反向工程策略来获取详细信息.Type Mapping 决定是否在类型映射属性中使用Java 或者Hibernate 类型, 例如ng.String 对应string. 这个设置只能在向导第 3 页的Customized Type Mappings 列表中没有指定更多信息时才能使用.ID Generator ID Generator 是Hibernate 映射文件必须有的内容. 它定义了持久类实例的唯一主键生成器Jaav 类. 参考资源部分里面的Hibernate 文档链接, 里面描述了每个ID 生成器的详细信息.如果留空或者更详细的配置在这个向导的第3 页没有配置, Hibernate 映射引擎将自动为你选择一个ID 生成器.Generate basic typed composite IDs 如果数据库表格包含有多个列的主键, 将总是使用<复合主键> 映射.如果这个选项启用并且有对应的多个外键, 每个主键列将依然会被作为'简单的' 标量(string, long, 等), 而不是引用到一个实体. 将会创建<many-to-one> 元素, 但是它们将会标记为非可更新和非可插入的字段.如果你禁用这个选项(默认推荐用这种方式), 将会创建<key-many-to-one> 元素来代替上面的生成内容.Generate version and timestamp tags 如果启用, 名为"version" 和"timestamp" 的列将会在生成的映射文件中作为<version> 和<timestamp> 标记出现. Customized Type Mappings 允许你来指定一个自定义的JDBC 类型到Hibernate 类型的转换, 使用Length, Scale, Precision 和Nullability 作为精度控制对应原来的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 对应当前列的Hibernate 类型.Include referenced / referencing tables 包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表.Generate support for ListedT able(fk)->UnlistedT able and UnlistedT able(fk)->ListedTable 生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示.在这个向导完成之后将会进行下面所列的操作:*创建类AbstractEchoMessage . 这个抽象类提供了所需的Hibernate 兼容的功能例如public 的读取器和设置器方法, 这些方法对应的持久化属性和ECHO_MESSAGE 数据库表格中的列相对应.*创建了一个EchoMessage Java 类, 是AbstractEchoMessage 类的一个具体的子类. EchoMessage 的目的是为了被修改后提供额外的业务和验证逻辑, 并且不会被后续的生成代码过程所覆盖.*创建了EchoMessage.hbm.xml Hibernate 映射描述符. 这个文件指示Hibernate 如何将EchoMessage Java 类和ECHO_MESSAGE 数据库表格中的数据相互映射.*在文件hibernate.cfg.xml 中注册EchoMessage.hbm.xml 映射描述符.*创建了Java 类EchoMessageDAO. 这个类提供了对EchoMessage 数据对象类的方便的访问和操作.*创建IBaseHibernateDAO 接口和BaseHibernateDAO 类. 这些类对基本的DAO 来说是必要的, 因为它使用了添加Hibernate 功能时候所生成的Session 工厂类(com.genuitec.hibernate.HibernateSessionFactory)来获取Hibernate 会话.图15 高亮显示了所生成的类, 关键方法和映射文件, 以及被添加到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 使用自定义反向工程策略1. 向你的项目中添加MyEclipse Persistence T ools 类库.* 右键点击你的项目然后选择Properties.* 在Java Build Path 页面, 在Libraries 面板下选择Add Library....* 选择MyEclipse Libraries ,接着选中MyEclipse Persistence T ools.* 点击Finish.图16. 添加MyEclipse Persistence Tools 类库2. 在你的项目中创建一个新类, 让这个类继承自org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 类.3. 定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, columnT oPropertyName.这里是一个例子, 将在所有生成的属性前添加一个"ME_" 前缀.MyStrategy.javapackage com.genuitec.hibernate;import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;import org.hibernate.cfg.reveng.T ableIdentifier;public class MyStrategy extends DelegatingReverseEngineeringStrategy {public MyStrategy(ReverseEngineeringStrategy strategy) {super (strategy);}public String columnT oPropertyName(TableIdentifier table, String columnName) { return "ME_" + super.columnT oPropertyName(table, columnName);}}图17. MyStrategy.java 源代码清单4. 在反向工程向导的第2 页, 选中刚才所创建的类图18. 指定反向工程策略5.7 编辑映射文件MyEclipse 包含了定制过的XML 编辑器来专门用于修改Hibernate 映射文件(*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择Open With > MyEclipse Hibernate Mapping Editor.功能* 超链接浏览到引用到的类和属性.* 类名自动完成提示.* 属性名自动完成提示.* 映射文件元素, 属性和值的内容完成提示.图19. Hibernate 映射文件编辑器。