`

appfuse 数据表 反向工程

阅读更多

备注:整理别人的资料,加上自己的实践,参考文章:

http://www.diybl.com/course/3_program/java/javashl/20090131/154668.html

12创建表
CREATETABLE`Employee`(
`id`bigint(20)NOTNULLauto_increment,
`code`varchar(10)NOTNULL,
`dept`varchar(50)NOTNULL,
`name`varchar(20)NOTNULL,
`status`varchar(10)NOTNULL,
`telephone`varchar(20)defaultNULL,
`title`varchar(50)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;

由表生成model运行mvnappfuse:gen-model
会在model包中生成Employee.java
查看原代码,原来model中有两个ID的生成策略,如下:
@Id@GeneratedValue(strategy=IDENTITY)@GeneratedValue(strategy=GenerationType.AUTO)
删除@GeneratedValue(strategy=IDENTITY),只剩下一个。
14由model生成CRUD
mvnappfuse:gen-Dentity=Employee
会生成employeeList.jsp、employeeForm.jsp、EmployeeAction.java
但是没有自动生成dao与service而是采用的GenericManager中的方法,解决方法见15
15在项目下的pom.xml中查找genericCore,大概在940行找到将属性true改为false
像这样false
16重新运行mvnappfuse:gen-Dentity=Employee

mvn appfuse:install -Dentity= Employee 试一下

在myeclipse中查看代码dao与service也都生成了

问题:EmployeeDaoHibernate.java不能发布到tomcat上,很奇怪

不要忘了在hibernate.cfg.xml中添加maping

部署的时候,发布不了, 记得把src/main/webapp在bulid path中删除,然后用webapp指向它(link source)


18但是最后还有个问题就是appfuse页面中显示乱码 ,我的上篇文章也有介绍
解决方法:修改pom.xml中
255行:UTF-8
260行:*_zh*.properties
293行:*_zh*.properties
发现问题依然存在,然后修改display*.properties文件,把里面的文件改成中文,然后mvnjetty:run一下就可以了

相关知识:(转载)

1。可以使用“mvn appfuse:gen-model”依据数据库的表生成POJO,如果你非常熟悉JPA也可以手写POJO,位置在DgroupId.model下。再通过“mvn appfuse:gen -Dentity=Name”生成CURD类。

2。如果POJO不存在关联关系,那么执行“mvn appfuse:gen -Dentity=Name”时,如果Entity没有在hibernate.cfg.xml里,则会自动增加。如果存在关联关系,在POJO里注释了 @OneToMany或者 @ManyToMany,直接执行“mvn appfuse:gen -Dentity=Name”很容易报一下错误:

[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Use of @OneToMany or @ManyToMany targeting an unmapped class: com.reda.app.model.CompanyType.
companies[com.reda.app.model.Company]
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com
.reda.app.model.CompanyType.companies[com.reda.app.model.Company]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.
java:979)
......


因为“mvn appfuse:gen -Dentity=Name”一次只支持一个Entity(这样执行会很累啊),会找不到对应的关联者。这时,我们需要手动的将有关联关系的Entity都加入到hibernate.cfg.xml里,再执行就可以了。

3。执行“mvn jetty:run-war”时,会根据POJO先删除数据库里的表再重建,如果不想对数据进行操作可以修改pom.xml,将drop熟悉修改为 false。不过执行“mvn jetty:run-war”仍然会执行建表操作,出现大量的错误日志,不过没有影响。

1 < groupId > org.codehaus.mojo </ groupId >
2 < artifactId > hibernate3-maven-plugin </ artifactId >
3 < version > 2.0-alpha-2 </ version >
4 < configuration >
5 < components >
6 < component >
7 < name > hbm2ddl </ name >
8 < implementation > annotationconfiguration </ implementation >
9 <!-- Use'jpaconfiguration'ifyou'reusingJPA. -->
10 <!-- <implementation>jpaconfiguration</implementation> -->
11 </ component >
12 </ components >
13 < componentProperties >
14 < drop > false </ drop >
15 < jdk5 > true </ jdk5 >
16 < propertyfile > target/classes/jdbc.properties </ propertyfile >
17 < skip > ${maven.test.skip} </ skip >
18 </ componentProperties >
19 </ configuration >


4。执行“mvn jetty:run-war”时,会清空数据表的数据并插入默认的数据,默认的数据在%PROJECT_HOME%\src\main \resources\default-data.xml配置,这个很讨厌。修改pom.xml可以屏蔽这部分操作。

< dbunit .operation.type > NONE </ dbunit.operation.type >

5。执行“mvn jetty:run-war”时,会执行测试,很XP喔。如果测试通不过服务就起不来。找了很多配置似乎都跳不过这一步。
appfuse:gen-model时生成的POJO,自增列不会生成@Column注释,就容易报以下的错误,增加相应的@Column就可以了:

Unknown column 'this_.typeId' in 'field list'

另外生成的测试类也不是直接可以测试通过的,还要针对数据做一些修改。如果POJO存在关联关系,测试类的关联部分也需要进行手动设值的。

分享到:
评论

相关推荐

    ibatis版appfuse eclipse工程

    已经调试好的ibatis版appfuse eclipse工程。帮助学习appfuse。表结构 和hibernate的相同。

    appfuse

    使用appfuse2.0,下载过来的实例源码,没有jar包

    AppFuse

    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse...

    APPFUSE工具研究.doc

    Appfuse是一个开源的工程应用,它集成了现在最流行的开发框架到该应用中,使用Maven可以很方便的开发和部署因为。也可以集成到现在流行的开源开发工具如eclipse,idea等。现在让我们简单的看看APPFUSE开发应用的简单...

    AppFuse入门文档(AppFuse与SpringMVC+mybatis整合)

    本文档详细描述了AppFuse与SpringMVC+mybatis整合的过程,只要你懂一些基本的eclipse操作和基本的maven命令,就可以在三分钟之内迅速的搭建出一个AppFuse的架构

    appfuse1.4-architecture

    06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬

    可直接使用的appfuse项目

    AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...

    Appfuse1.9至2.0.2

    主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.

    appfuse新手上路

    新手使用appfuse2.0,启动步骤和配置过程

    AppFuse2.1所需包

    AppFuse2.1所需包,主要包括Spring MVC+Hibernate4 还有一些其它包!

    appfuse 学习笔记

    Appfuse 一个开放源码的项目和应用程序,帮助我们快速而高效的地开发。

    AppFuse项目研究

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持

    appfuse学习笔记(一)安装部署

    NULL 博文链接:https://savagegarden.iteye.com/blog/427169

    Appfuse框架解析

    Appfuse框架解析,包括登陆验证,执行顺序,加载策略等。

    Appfuse开发教程

    讲述如何创建POJO(对应相应的数据表)和 DAO(管理POJO持久化操作的对象)。 本教程将向你展示如何在一个数据库里创建表,以及如何完成访问这些表的Java代码。我们将建立一个对象以及处理(保存/检索/删除)这些类到数据库...

    基于AppFuse框架的B2C电子商务系统研究与实现

    基于AppFuse框架的B2C电子商务系统研究与实现

    SSH学习及开发框架-appfuse

    appfuse 有struts2+hibernate+spring的整合 springmvc+hibernate+spring的整合 多模块,但模块都有 学习开发参考使用非常方便 可以到官方下载最新版的,我只是把自己下载的打包整理一下 注意哈,都是基于maven的...

    建立项目原型骨架的步骤(最新版本appfuse)appfuse2.1.0-M2

    建立项目原型骨架的步骤(最新版本appfuse)appfuse2.1.0-M2 spring3.0 hibernte3.3 struts2.1.8

    appfuse使用手册

    代码自动生成工具appfuse的中文使用手册

Global site tag (gtag.js) - Google Analytics