首页 > 其他 > 详细

liferay7.3.5开发学习(四)- 项目搭建

时间:2021-02-02 15:03:26      阅读:36      评论:0      收藏:0      [点我收藏+]

四、service-builder

Service Builder是Liferay Portal提供的一种代码生成方案,用来和数据库打交道,开发人员只需要编辑数据库的实体描述文件,即可根据此XML文件生成Spring层代码、Hibernate层代码、SQL、SQL索引创建文件、Spring和Hibernate的配置文件等,简化了开发周期。简单来说,就是根据数据库描述文件,生成service层和持久化层的代码,开发人员只需要关注控制层即可。

主要作用:简化开发周期,使定制化开发的代码保持规范性和一致性

实现原理:基于Freemarker的模板代码生成方案,生成代码的逻辑在源码的如下包路径下面:com.liferay.portal.tools.servicebuilder

1、创建

新建一个Liferay Module Project,其中Project Template Name选择service-builder,如下图:

技术分享图片

 

点击Next,填写包名。

技术分享图片

 

点击Finish完成创建,创建完成后的项目会放到modules下面,项目分为xxxx-api和xxxx-service两部分,如下图:

 技术分享图片

 

 

 2、数据库表配置

在service下面找到service.xml文件,此文件为数据库描述文件。如下图:

技术分享图片

service.xml 内容如下:

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.3.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_7_3_0.dtd">

<service-builder dependency-injector="ds" package-path="com.etbird.liferay7.sb">
    <namespace>FOO</namespace>
    <!--<entity data-source="sampleDataSource" local-service="true" name="Foo" remote-service="false" session-factory="sampleSessionFactory" table="foo" tx-manager="sampleTransactionManager uuid="true"">-->
    <entity local-service="true" name="Foo" remote-service="true" uuid="true">

        <!-- PK fields -->

        <column name="fooId" primary="true" type="long" />

        <!-- Group instance -->

        <column name="groupId" type="long" />

        <!-- Audit fields -->

        <column name="companyId" type="long" />
        <column name="userId" type="long" />
        <column name="userName" type="String" />
        <column name="createDate" type="Date" />
        <column name="modifiedDate" type="Date" />

        <!-- Other fields -->

        <column name="field1" type="String" />
        <column name="field2" type="boolean" />
        <column name="field3" type="int" />
        <column name="field4" type="Date" />
        <column name="field5" type="String" />

        <!-- Order -->

        <order by="asc">
            <order-column name="field1" />
        </order>

        <!-- Finder methods -->

        <finder name="Field2" return-type="Collection">
            <finder-column name="field2" />
        </finder>

        <!-- References -->

        <reference entity="AssetEntry" package-path="com.liferay.portlet.asset" />
        <reference entity="AssetTag" package-path="com.liferay.portlet.asset" />
    </entity>
</service-builder>

其中:

namespace为表名的前缀

entity里面的name为表生成实体后的名字,默认也是表名,如果想指定表名,要用table属性。

column:为表中字段,name为默认实体属性名也为数据库表字段名,想指定字段的话用db-name, type为字段类型,这里的字段类型为Java中的数据类型。

如果是主键,添加primary=true属性。

order为排序方法,字段名指定前面column里面的name值。

 

编写完service.xml文件后,找到gradle tasks下面的xxxx-service,进入到build,双击buildService,如下图所示:

技术分享图片

 

 成功后刷新HelloServiceBuilder工程会发现在api和service下面生成了src包,里面是生成的数据库相关代码。如下图所示:

技术分享图片

 

 API我们一般不需要改动,一般修改service包下的..Impl.java, ..LocalServiceImpl.java, ..serviceimpl.java文件,主要实现业务层逻辑。

此时,数据库中还看不到增加的表,需要部署完成后才能在数据库中看到增加的表。

部署:

技术分享图片

 

 数据库中增加表foo_foo,如下图:

技术分享图片

 

 3、在Portlet中使用

 

liferay7.3.5开发学习(四)- 项目搭建

原文:https://www.cnblogs.com/etbird/p/14359186.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!