AppFuse 2.0研究(一)

新版本的AppFuse虽然实现的功能没有变,但实现方式的变化还是挺大的。

接下来让我们随着AppFuse的引导,一起学习最新的技术吧。

想要了解AppFuse的基本功能,我觉得最快的方法还是亲自做一做。以前的AppFuse有提供CRUD代码的自动生成功能,新版当然也不例外。

借用AppFuse网站中的例子,建立一个最简单的POJO。

import javax.persistence.Entity;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.GeneratedValue;

import javax.persistence.Column;

import org.apache.commons.lang.builder.EqualsBuilder;

import org.apache.commons.lang.builder.HashCodeBuilder;

import org.apache.commons.lang.builder.ToStringBuilder;

 

@Entity

public class Person extends BaseObject {

      

       private static final long serialVersionUID = -2267205427831321488L;

       private Long id;

       private String firstName;

       private String lastName;

      

       @Id @GeneratedValue(strategy = GenerationType.AUTO)

       public Long getId() {

              return id;

       }

 

       public void setId(Long id) {

              this.id = id;

       }

      

       @Column(name="first_name", length=50)

       public String getFirstName() {

              return firstName;

       }

 

       public void setFirstName(String firstName) {

              this.firstName = firstName;

       }

 

       @Column(name="last_name", length=50)

       public String getLastName() {

              return lastName;

       }

 

       public void setLastName(String lastName) {

              this.lastName = lastName;

       }

 

       /**

        * @see java.lang.Object#equals(Object)

        */

       public boolean equals(Object object) {

              if (!(object instanceof Person)) {

                     return false;

              }

              Person rhs = (Person) object;

              return new EqualsBuilder().append(this.firstName, rhs.firstName)

                            .append(this.id, rhs.id).append(this.lastName, rhs.lastName)

                            .isEquals();

       }

 

       /**

        * @see java.lang.Object#hashCode()

        */

       public int hashCode() {

              return new HashCodeBuilder(248915313, 1539783955)

                            .append(this.firstName).append(this.id).append(this.lastName)

                            .toHashCode();

       }

 

       /**

        * @see java.lang.Object#toString()

        */

       public String toString() {

              return new ToStringBuilder(this).append("lastName", this.lastName)

                            .append("id", this.id).append("firstName", this.firstName)

                            .toString();

       }

}

 

接下来根据这个POJO生成CRUD代码。

在命令行下运行mvn appfuse:gen -Dentity=Person,这个POJO的CRUD代码即被生成,并自动添加到项目中。

 

接下来根据这个POJO生成数据表。
在命令行下运行mvn test-compile hibernate3:hbm2ddl。

然后找到/src/test/resources下的hibernate.cfg.xml文件,添加<mapping class="com.mycompany.app.model.Person"/>

最后运行mvn jetty:run-war,可以通过http://localhost:8080看到我们新添加的person了。

在/target/appfuse/generated-sources里有所有Person的自动生成的代码,通过查看这些文件,我们可以了解到AppFuse里实现一张表的CRUD需要多少个文件。熟悉AppFuse1.x的人也可以比较一下两个版本实现方式的区别。

 

下面就是/target/appfuse/generated-sources里的所有文件,我们来研究一下。

src/test/resources/Person-sample-data.xml 可以配置初始数据的文件,添加到sample-data.xml

src/test/resources/Person-web-tests.xml jsp的单元测试配置文件

src/test/java/com/mycompany/app/webapp/action/PersonActionTest.java Action的单元测试文件

src/main/resources/Person-generic-beans.xml 添加到applicationContext.xml

src/main/resources/PersonManager-bean.xml 无用

src/main/resources/Person-struts.xml 添加到src/main/resources/struts.xml中

src/main/resources/Person-ApplicationResources.properties 资源文件,添加到src/main/resources/ApplicationResources.properties

src/main/resources/com/mycompany/app/model/Person-validation.xml这个在1.x里是自动生成的,现在需要自己去改。

src/main/resources/com/mycompany/app/webapp/action/PersonAction-validation.xml Action的validation

src/main/java/com/mycompany/app/webapp/action/PersonAction.java Ation

src/main/webapp/WEB-INF/Person-struts-bean.xml 可以添加到applicationContext-struts.xml中,也可以不添加,区别就是struts.xml中Action的声明方式有点变化。

src/main/webapp/WEB-INF/Person-menu-config.xml 用于配置菜单项,添加到src/main/webapp/WEB-INF/menu-config.xml 菜单配置文件

src/main/webapp/common/Person-menu.jsp 菜单显示jsp

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值