备注:整理别人的资料,加上自己的实践,参考文章:
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工程。帮助学习appfuse。表结构 和hibernate的相同。
1. **模型(Model)**:这部分由实体类组成,通常是JavaBeans,它们代表数据库中的表。 2. **持久层(Persistence Layer)**:AppFuse支持Hibernate或JPA作为ORM(对象关系映射)工具,负责与数据库交互。 3. **...
- 使用AppFuse提供的脚本或工具,可以自动为数据库表生成相应的Java对象(POJO)以及增删改查(CRUD)操作所需的代码。 - 通过这种方式,开发者可以大大减少重复性的编码工作,更加专注于业务逻辑的实现。 4. **...
**AppFuse 学习笔记(一):安装与部署** AppFuse 是一个开源项目,它提供了一种快速构建企业级 Web 应用程序的方式。它使用了多种流行的技术栈,如 Spring Boot、Hibernate、Thymeleaf 和 Maven,使得开发者可以更...
5. **DisplayTag**:一个用于表格展示、分页、排序和数据导出的标签库,提高了UI的易用性。 6. **Struts Menu**:根据配置文件自动生成用户可用的功能菜单,有助于构建用户界面。 为了使用AppFuse 2.0,开发者需要...
本教程将深入探讨如何利用Appfuse创建数据访问对象(DAO)和简单Java对象(POJO),并进行数据库操作。 **一、在APPFUSE建立DAO和POJO** 1. **建立一个对象,并且作XDoclet标记** POJO(Plain Old Java Object)...
MySQL 用于搭建数据库环境,为 Appfuse 应用提供数据存储支持。安装 MySQL 后,需要创建数据库并进行必要的配置,以便后续的开发工作。 **3. 配置 SMTP 服务(可选)** 对于邮件功能的支持,可以通过配置 SMTP ...
Hibernate4在AppFuse中用于持久化数据,提供了强大的查询语言HQL(Hibernate Query Language)以及 Criteria API,能够方便地进行数据检索、更新和删除操作。 在"pfms_lib"这个压缩包中,我们可能会找到以下关键...
06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬
值得注意的是,当执行`mvn jetty:run-war`时,会清空数据表并插入默认数据,这些数据通常存储在项目的`src/main/resources/default`目录下。 完成以上步骤后,你已经成功搭建了一个基于AppFuse 2.1.0-M2的项目骨架...
然后,利用AppFuse的模板工程生成基本的项目结构,包括模型(Model)、视图(View)和控制器(Controller)文件。接着,根据业务逻辑,编写对应的Java代码,配置相关的XML文件,实现各模块的功能。 对于用户管理,...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
【MAVEN 搭建APPFUSE】是一个关于使用Maven构建基于AppFuse的应用程序的教程。AppFuse是一个开源项目,旨在简化Web应用程序的开发,它提供了一个基础框架,可以帮助开发者快速启动新项目,整合了Spring、Hibernate、...
AppFuse 是一个由 Matt Raible 创建的开源项目,旨在为初学者提供一个快速入门的 J2EE 框架模板。它集成了多种流行的技术,包括 Spring、Hibernate、iBatis、Struts、Xdoclet 和 JUnit,同时也支持 Taperstry 和 JSF...
主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.
通过ORM(对象关系映射),将Java对象与数据库表对应,使得开发者可以使用面向对象的方式操作数据。 ### 使用AppFuse的好处 1. **快速原型**:AppFuse提供了一个基础的模板,开发者只需根据需求修改即可,大大缩短...
通过以上步骤,开发者可以从零开始构建一个完整的基于 AppFuse 的 Web 应用,涵盖从数据模型到用户界面的所有方面。这样的过程不仅有助于理解 AppFuse 的工作原理,还能够加深对相关技术栈的理解。