首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在 Service Builder 中实现实体多对多关系

使用 Liferay 做二次开发项目,少不了数据库设计! 我们可以使用 Liferay 提供的 Service Builder(服务构建器)在 service.xml 文件中定义各个数据库实体之间的关系,然后为你的应用程序自动生成必要的模型、持久化和服务层,其中也包括了对实体的创建、读取、更新、删除和查找等操作。这样你就可以有更多地时间专注于业务逻辑的实现,做出更有价值的功能!谈到数据库设计,数据库实体间有三种对应关系:一对一、一对多、多对多。今天我们先来讲 Liferay 中如何实现多对多关系。就拿学生选课这种最通俗易懂的例子来说吧。通常一个学生可以学习多门课程,一门课程也可以被多名学生学习。

从中可以提炼出两个实体:学生:Student课程:Course要记录学生和课程的关系,在学生或课程表中添加一个字段肯定是行不通的,我们需要考虑建议关系表,比如 Students_Courses。在 PowserDesigner 这种数据库设计工具中,如果概念模型中定义了多对多关系,在生成逻辑模型或者物理模型时,会自动新增一个实体做关系表。根据这样的思路,我们只需要在 service.xml 中定义三个实体(Student、Course、Students_Courses )也可以解决多对多的问题。但是有没有更简单的方法呢?像 PowserDesigner 概念模型那种,只需要创建两个实体,并定义他们的关系即可?Liferay 提供的 Service Builder 正好提供了这种方便的定义方式。接下来,我们实际操作一下吧。开发环境

Liferay Portal:7.0.4 GA5Liferay IDE:3.1.2创建 Service Builder 模块项目

创建项目名为的模块项目。

设置包名为。

在 service.xml 定义实体及关系

参考以下代码编辑文件:

DEMO

部署 Service Builder 模块执行 Gradle 命令及命令,成功之后就可以在数据库中看到三张表了,表名分别是、、。创建测试项目

创建项目名为的模块项目。

指定组件类名为,包名为。

添加测试代码

publicclassManyToManyPortletextendsMVCPortlet{

@Override

publicvoiddoView(RenderRequestrenderRequest,RenderResponserenderResponse)

throwsIOException,PortletException{

Studentstudent1,student2;

student1=StudentLocalServiceUtil.createStudent(CounterLocalServiceUtil.increment());

student2=StudentLocalServiceUtil.createStudent(CounterLocalServiceUtil.increment());

student1.setName("fanqi");

student2.setName("huqiwen");

StudentLocalServiceUtil.addStudent(student1);

StudentLocalServiceUtil.addStudent(student2);

Coursecourse1,course2;

course1=CourseLocalServiceUtil.createCourse(CounterLocalServiceUtil.increment());

course2=CourseLocalServiceUtil.createCourse(CounterLocalServiceUtil.increment());

course1.setName("Liferay Portal");

course2.setName("Liferay Mobile SDK");

CourseLocalServiceUtil.addCourse(course1);

CourseLocalServiceUtil.addCourse(course2);

CourseLocalServiceUtil.addStudentCourses(student1.getStudentId(),newlong[]{course1.getCourseId(),course2.getCourseId()});

CourseLocalServiceUtil.addStudentCourse(student2.getStudentId(),course1);

super.doView(renderRequest,renderResponse);

}

}

部署并查看测试数据

执行 Gradle 命令命令,并将添加页面,就可以在数据库中看到测试数据了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180103G101NN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券