Liferay学习历程二:搭建二次开发环境

上一篇写了Liferay源代码的编译和二次开发环境的生成(ext工程),下面将介绍在二次开发环境上搭建自己的开发框架.

用Eclipse打开编译Liferay源代码生成的ext扩展开发环境,如下图
Liferay学习历程二:搭建二次开发环境

主要介绍ext-ejb和ext-web两个目录,利用Liferay的ant工具可以自动生成一套对于数据库表CURD的处理类,但是为符合自己的开发习惯,我在ext环境上搭建了自己的开发框架,主要包括两大块,第一是Hibernate数据访问层的封装,二是Struts的集成,集成了DispatchAction的多方法的功能.

下面介绍如何对Hibernate数据访问层进行封装ext-ejb/classes/META-INF 目录下面的ext-hbm.xml是Hibernate映射文件,ext-spring-professional.xml是Spring配置文件,对于ext-hbm.xml文件就不做解释了下面是Hibernate数据访问层的Spring的配置代码

Liferay学习历程二:搭建二次开发环境<beanid="cn.pisoft.portlet.hibernate.HibernateService.professional"class="cn.pisoft.portlet.hibernate.impl.HibernateServiceImpl"lazy-init="true"/>
Liferay学习历程二:搭建二次开发环境
<beanid="cn.pisoft.portlet.hibernate.HibernateService.transaction"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"lazy-init="true">
Liferay学习历程二:搭建二次开发环境
<propertyname="transactionManager">
Liferay学习历程二:搭建二次开发环境
<refbean="liferayTransactionManager"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
<propertyname="target">
Liferay学习历程二:搭建二次开发环境
<refbean="cn.pisoft.portlet.hibernate.HibernateService.professional"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
<propertyname="transactionAttributes">
Liferay学习历程二:搭建二次开发环境
<props>
Liferay学习历程二:搭建二次开发环境
<propkey="*">PROPAGATION_REQUIRED</prop>
Liferay学习历程二:搭建二次开发环境
</props>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
</bean>
Liferay学习历程二:搭建二次开发环境
<beanid="cn.pisoft.portlet.hibernate.factory.HibernateServiceFactory"class="cn.pisoft.portlet.hibernate.factory.HibernateServiceFactory"lazy-init="true">
Liferay学习历程二:搭建二次开发环境
<propertyname="service">
Liferay学习历程二:搭建二次开发环境
<refbean="cn.pisoft.portlet.hibernate.HibernateService.transaction"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
</bean>
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
<beanid="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"class="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"lazy-init="true">
Liferay学习历程二:搭建二次开发环境
<propertyname="dataSource">
Liferay学习历程二:搭建二次开发环境
<refbean="liferayDataSource"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
<propertyname="sessionFactory">
Liferay学习历程二:搭建二次开发环境
<refbean="liferaySessionFactory"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
</bean>
Liferay学习历程二:搭建二次开发环境
<beanid="cn.pisoft.portlet.hibernate.util.HibernateDaoUtil"class="cn.pisoft.portlet.hibernate.util.HibernateDaoUtil"lazy-init="true">
Liferay学习历程二:搭建二次开发环境
<propertyname="dao">
Liferay学习历程二:搭建二次开发环境
<refbean="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"/>
Liferay学习历程二:搭建二次开发环境
</property>
Liferay学习历程二:搭建二次开发环境
</bean>

下面是相关的JAVA类和接口

HibernateDao.java 接口

Liferay学习历程二:搭建二次开发环境packagecn.pisoft.portlet.hibernate;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importjava.io.Serializable;
Liferay学习历程二:搭建二次开发环境
importjava.util.List;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importcn.pisoft.portlet.common.Pager;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
/***//**
Liferay学习历程二:搭建二次开发环境*<p>Title:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Description:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Copyright:Copyright(c)2007</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Company:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Author:一个人的日子</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Email:[email protected]</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Version:1.0</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Create2007-7-29</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境
*/

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicinterfaceHibernateDao...{
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicvoidsave(Objectpo)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicListquery(Stringhql)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicObjectget(Classclas,Serializableid)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicvoidupdate(Objectpo)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicvoiddelete(Objectpo)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicPagerqueryByPage(Stringhql,inttotalElements,intpageNumber,intpageSize)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicPagerqueryByPage(Stringhql,intpageNumber,intpageSize)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicvoidexecuteSql(Stringsql)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicintgetCountByExecuteSql(Stringsql)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicListgetTopN(Stringhql,intn)throwsException;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
publicListgetListByExecuteSql(Stringsq,StringcolumnNamel)throwsException;
Liferay学习历程二:搭建二次开发环境
publicListgetListByExecuteSql(Stringsq,intfetchNubmer)throwsException;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境

HibernateDaoImpl.java 上面接口的实现类

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
packagecn.pisoft.portlet.hibernate.impl;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importjava.io.Serializable;
Liferay学习历程二:搭建二次开发环境
importjava.sql.Connection;
Liferay学习历程二:搭建二次开发环境
importjava.sql.ResultSet;
Liferay学习历程二:搭建二次开发环境
importjava.sql.Statement;
Liferay学习历程二:搭建二次开发环境
importjava.util.ArrayList;
Liferay学习历程二:搭建二次开发环境
importjava.util.List;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importorg.hibernate.Query;
Liferay学习历程二:搭建二次开发环境
importorg.hibernate.Session;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importcn.pisoft.portlet.common.Pager;
Liferay学习历程二:搭建二次开发环境
importcn.pisoft.portlet.hibernate.HibernateDao;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
importcom.liferay.portal.service.persistence.BasePersistence;
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
/***//**
Liferay学习历程二:搭建二次开发环境*<p>Title:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Description:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Copyright:Copyright(c)2007</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Company:</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Author:一个人的日子</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Email:[email protected]</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Version:1.0</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境*<p>Create2007-7-29</p>
Liferay学习历程二:搭建二次开发环境*
Liferay学习历程二:搭建二次开发环境
*/

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicclassHibernateDaoImplextendsBasePersistenceimplementsHibernateDao...{
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicListquery(Stringhql)throwsException...{
Liferay学习历程二:搭建二次开发环境Listlist
=null;
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境list
=session.createQuery(hql).list();
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境
returnlist;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicvoidsave(Objectpo)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境session.save(po);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicObjectget(Classclas,Serializableid)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境Objecto
=session.get(clas,id);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境
returno;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicvoidupdate(Objectpo)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境session.update(po);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicvoiddelete(Objectpo)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境session.delete(po);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicPagerqueryByPage(Stringhql,inttotalElements,intpageNumber,intpageSize)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境Pagerpage
=newPager();
Liferay学习历程二:搭建二次开发环境page.setPageNumber(pageNumber);
Liferay学习历程二:搭建二次开发环境page.setPageSize(pageSize);
Liferay学习历程二:搭建二次开发环境page.setTotalElements(totalElements);
Liferay学习历程二:搭建二次开发环境Listlist
=null;
Liferay学习历程二:搭建二次开发环境Queryquery
=session.createQuery(hql);
Liferay学习历程二:搭建二次开发环境query.setFirstResult((pageNumber
-1)*pageSize);
Liferay学习历程二:搭建二次开发环境query.setMaxResults(pageSize);
Liferay学习历程二:搭建二次开发环境list
=query.list();
Liferay学习历程二:搭建二次开发环境page.setElements(list);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境
returnpage;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicPagerqueryByPage(Stringhql,intpageNumber,intpageSize)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;
Liferay学习历程二:搭建二次开发环境session
=this.openSession();
Liferay学习历程二:搭建二次开发环境Pagerpage
=newPager();
Liferay学习历程二:搭建二次开发环境page.setPageNumber(pageNumber);
Liferay学习历程二:搭建二次开发环境page.setPageSize(pageSize);
Liferay学习历程二:搭建二次开发环境
inttotalElements=0;
Liferay学习历程二:搭建二次开发环境StringstaticSql
=hql.trim();
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
if(staticSql.startsWith("select")||staticSql.startsWith("SELECT"))...{
Liferay学习历程二:搭建二次开发环境
intfromIndex=staticSql.indexOf("from");
Liferay学习历程二:搭建二次开发环境
intFROMIndex=staticSql.indexOf("FROM");
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
if(FROMIndex!=-1&&fromIndex>FROMIndex)...{
Liferay学习历程二:搭建二次开发环境fromIndex
=FROMIndex;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
if(fromIndex==-1)...{
Liferay学习历程二:搭建二次开发环境fromIndex
=0;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境staticSql
=staticSql.substring(fromIndex);
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
intorderByIndex=staticSql.indexOf("orderby");
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
if(orderByIndex!=-1)...{
Liferay学习历程二:搭建二次开发环境staticSql
=staticSql.substring(0,orderByIndex);
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Queryquery
=session.createQuery("selectcount(*)"+staticSql);
Liferay学习历程二:搭建二次开发环境Listlist
=query.list();
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
if(list!=null&&list.get(0)!=null)...{
Liferay学习历程二:搭建二次开发环境totalElements
=((Long)list.get(0)).intValue();
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境page.setTotalElements(totalElements);
Liferay学习历程二:搭建二次开发环境query
=session.createQuery(hql);
Liferay学习历程二:搭建二次开发环境query.setFirstResult((pageNumber
-1)*pageSize);
Liferay学习历程二:搭建二次开发环境query.setMaxResults(pageSize);
Liferay学习历程二:搭建二次开发环境list
=query.list();
Liferay学习历程二:搭建二次开发环境page.setElements(list);
Liferay学习历程二:搭建二次开发环境
this.closeSession(session);
Liferay学习历程二:搭建二次开发环境
returnpage;
Liferay学习历程二:搭建二次开发环境}

Liferay学习历程二:搭建二次开发环境
Liferay学习历程二:搭建二次开发环境Liferay学习历程二:搭建二次开发环境
publicvoidexecuteSql(Stringsql)throwsException...{
Liferay学习历程二:搭建二次开发环境Sessionsession
=null;