zoukankan      html  css  js  c++  java
  • Liferay7.0开发学习(三):ServiceBuilder工程的创建使用

    参考:http://www.huqiwen.com/2016/05/12/liferay-7-study-3-create-deploy-servicebuilder-project/

    Liferay7.0开发学习(三):ServiceBuilder工程的创建使用

     

    本篇博客分享一下怎么创建ServiceBuilder工程。

    关于ServiceBuilder的介绍可以看之前写的6.2的文章,虽然7.0的开发有变化,但是Servicebuilder的原理和使用都是一样的。

    Liferay 6.1开发学习(四):Service Builder

    Liferay 6.1开发学习(十九):Liferay ServiceBuilder之自定义查询

    ServiceBuilder是什么?

    Service Builder是Liferay提供的一种代码生成方案,开发人员只需要编辑一个数据库的实体描述文件(XML),即可根据此XML文件生成Spring层代码、Hibernate层代码、SQL、SQL索引创建文件、Spring和hibernate的配置文件等,可以大提高开发人员的效率。简单说就是根据数据库描述文件,生成service层和持久化层的代码,开发人员只需要关注控制层即可。

    ServiceBuilder有什么好处?

    1、首先ServiceBuilder不是必须的,只是Liferay提供的一个代码生成方案,用来和数据库打交道,自己写JDBC连接、使用JPA、hibernate等都是可以的。

    2、即使自己开发不使用ServiceBuilder,还是有必要进行学习的。因为Liferay源码里面和数据库交互的业务层、持久层的代码都是基于ServiceBuilder进行的,学习后有助于理解并掌握Liferay的源码和相关API。

    3、Liferay的ServiceBuilder能够加快开发效果。

    4、Liferay本身的一些UI标签等,必须要配合ServiceBuilder使用。

    5、使用ServiceBuilder可以方便的生成远程访问接口。

    liferay 7.0里面ServiceBuilder工程的创建

    开发环境的问题请先阅读前面的文章

    Liferay7.0开发学习(一):开发环境搭建

    Liferay7.0开发学习(二):创建并部署一个Portlet

    第一步:创建一个Liferay Workspace,如果已经创建过,跳过此步骤。

    第二步:创建一个New Liferay Module Project的项目,在Project Template Name那里选择Servicebuilder。

    第三步:点击next,输入包名和类名。

    第四步:点击finish,此时会在workspace的modules里面生成我们创建的工程,生成的有两人一个为ServiceBuildDemo-api,一个为ServiceBuilderDemo-server。

    第五步:在ServiceBuilderDemo-server下面找到一个名为Service.xml的文件。此文件为数据库的描述文件,在下方,有source、overview、Diagram等三个tab,overview为可视化的界面。

    1、namespace:namespace默认情况下会是我们的表名的前缀,根据情况进行修改。

    2、修改entity里面的name,此name将会生成实体类,所以第一个字母大写。同时也是默认的表名,如果要指定表名,添加字段table。

    3、column:为表中的字段,也就是实体的属性,默认为表的字段名,如果要指定,添加属性db-name,type为字段类型,这里的类型为Java中的数据类型,可选的有Blob、boolean、Collection、Date、double、int、long、String等。

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

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

    6、下面的finder等可以先删除,如果要了解参考前面写的Service Builder的自定义查询的博客。

    第六步:编写完Service.xml文件,现在在Gradle Task的面板里面,找到ServiceBuilderDemo-service下面,进入到build,双击buildService。如下图

    第七步:刷新一下ServiceBuildDemo的工程,就可以在API和server下面看到生成了相应的src包,这里面就是生成的我们的数据库相关的代码。API的代码我们一般不需要动,我们仅允许修改的代码为service包下面的xxxImpl,xxxLocalServerImpl,和xxxServerImpl。其中的xxx为我们在service.xml里面定义的entity的name值。

    如何使用ServiceBuilder的包?

    上面创建的service包,算是后面的业务逻辑部分,如果我们想在页面上进行展现,比如使用上面的API将数据写入数据库,读取出来列表在页面上展现等,我们需要再创建一个portlet。创建的过程参考前面的博客:《Liferay7.0开发学习(二):创建并部署一个Portlet》。

    我们在自己创建的Portlet如何引入前面的service工程呢?

    打开portlet工程下面的build.gradle文件,在dependencies里面添加如下代码:

    compile project(":modules:ServiceBuilderDemo:ServiceBuilderDemo-api")

    具体的名称可以根据我们的工程名定义,如果确实是想省事,可以打开ServiceBuilderDemo-service下面的build.gradle,里面有这一行,复制下来就行。

    注意:引入只需要引入api的,不需要引入service的。

    现在在我们的Portlet工程里面就可以调用前面的数据库类了,如果我们前面entity里面定义的name为Book,则我们一般的方法都是通过BookLocalServiceUtil进行调用。

    比如

    添加:BookLocalServiceUtil.add(book)

    删除:BookLocalServiceUtil.deleteBook(book)

    查询所有:BookLocalServiceUtil.getBooks(start,end),start为启始,end为结束,可以使用此进行分页,如果是查询所有,都传入-1。

    更多的API,可以自己摸索。

    部署

    部署的时候先将api和service部署了,再部署portlet。

  • 相关阅读:
    Windows Phone学习笔记(6) — — 套接字概述
    Windows Phone学习笔记(4) — — 本地数据库操作
    Windows Phone学习笔记(7) — — TCP套接字
    Windows Phone学习笔记(8) — — UDP套接字
    Windows Phone学习笔记(10) — — 设置页面
    模拟退火摘要
    记 我的第一篇博客
    Splay算法摘要
    调格式专区
    路由器 设置DMZ主机 端口转发 实现外网访问
  • 原文地址:https://www.cnblogs.com/show58/p/13801423.html
Copyright © 2011-2022 走看看