homepage 第三期:服务模块的通用模块开发及数据表的相关操作

本贴最后更新于 1989 天前,其中的信息可能已经事过境迁

1.建立服务模块,他同样是一个父模块,在 pom 文件中的打包方式处仍然是 pom,并且由于他是一个父模块,所以不需要 src 目录,删除。

2.建立服务模块的自模块:通用模块,用来写 course 服务和 user 服务可能用到的代码
在他的 pom 文件中添加相关依赖(打包方式为 jar)

<dependencies> <!-- JSON处理工具 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.31</version> </dependency> <!-- apache提供的工具类 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency>

3.在通用模块中编写相关服务
@1.完成 courseInfo 类

package cn.chenforcode.homepage; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * @author <a href="http://www.chenforcode.cn">PKUCoder</a> * @date 2019/11/11 12:57 上午 * @description 基本课程信息 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class CourseInfo { private Long id; private String courseName; private String courseType; private String courseIcon; private String courseIntro; public static CourseInfo invalid() { return new CourseInfo(-1L, "", "", "", ""); } }

@2.完成 userInfo 类

package cn.chenforcode.homepage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author <a href="http://www.chenforcode.cn">PKUCoder</a> * @date 2019/11/11 12:53 上午 * @description 基本的用户信息 */ @Data @NoArgsConstructor @AllArgsConstructor public class UserInfo { private Long id; private String username; private String email; public static UserInfo invalid() { return new UserInfo(-1L, "", ""); } }

@3.完成 courseInfoRequest 类

package cn.chenforcode.homepage; import java.util.List; /** * @author <a href="http://www.chenforcode.cn">PKUCoder</a> * @date 2019/11/11 1:01 上午 * @description 课程信息请求对象 */ public class CourseInfosRequest { private List<Long> ids; }

4.建立课程服务模块,完成 pom 文件,注意这里是一个 web 服务,所以需要加入 web 相关的依赖

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>imooc-homepage-service</artifactId> <groupId>cn.chenforcode.homepage</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>homepage-course</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> <scope>runtime</scope> </dependency> <!-- 通用模块 --> <dependency> <groupId>cn.chenforcode.homepage</groupId> <artifactId>homepage-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

5.编写启动类,这里的 @enableJpaAuditing 的作用是自动管理每一条数据的 createtime 和 updatetime 不需要自己管理

package cn.chenforcode.homepage; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; /** * @author <a href="http://www.chenforcode.cn">PKUCoder</a> * @date 2019/11/11 3:55 下午 * @description homepageCourse服务启动类 */ @EnableJpaAuditing @EnableEurekaClient @SpringBootApplication public class HomepageCourseApplication { public static void main(String[] args) { SpringApplication.run(HomepageCourseApplication.class, args); } }

6.完成配置文件

server: port: 7001 servlet: context-path: /homepage-course spring: application: name: eureka-client-homepege-course jpa: hibernate: ddl-auto: none show-sql: true properties: hibernate.format_sql: true open-in-view: false datasource: url: jdbc:mysql://127.0.0.1:3306/imooc_homepage_sc?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver tomcat: max-active: 4 min-idle: 2 initial-size: 2 eureka: client: service-url: #如果是一个集群,那么把所有的eureka的地址都写到这 defaultZone: http://server1:8000/eureka/

7.建立 homepageCourse 实体表

package cn.chenforcode.homepage.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.UpdateTimestamp; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; import java.util.Date; /** * @author <a href="http://www.chenforcode.cn">PKUCoder</a> * @date 2019/11/11 4:12 下午 * @description homepage_course表映射实体 */ @Data @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "homepage_course") @EntityListeners(AuditingEntityListener.class) public class HomepageCourse { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Long id; //课程名称 @Basic @Column(name = "course_name", nullable = false) private String courseName; //课程类型 0(免费课),1(实战课) @Basic @Column(name = "course_type", nullable = false) private Integer courseType; //课程图标 @Basic @Column(name = "course_icon", nullable = false) private String courseIcon; //课程介绍 @Basic @Column(name = "course_intro", nullable = false) private String courseIntro; //创建时间 @Basic @Column(name = "create_time", nullable = false) @CreatedDate private Date CreateTime; //更新时间 @Basic @Column(name = "update_time", nullable = false) @LastModifiedDate private Date updateTime; public HomepageCourse(String courseName, Integer courseType, String courseIcon, String courseIntro) { this.courseName = courseName; this.courseType = courseType; this.courseIcon = courseIcon; this.courseIntro = courseIntro; } /** * @Author <a href="http://www.chenforcode.cn">PKUCoder</a> * @Date 2019/11/11 4:27 下午 * @Param [] * @Return cn.chenforcode.homepage.entity.HomepageCourse * @Description 返回一个无效的course **/ public static HomepageCourse invalid() { HomepageCourse invalid = new HomepageCourse("", 0, "", ""); invalid.setId(-1L); return invalid; } }

8.建立对应的仓库

package cn.chenforcode.homepage.repository; import cn.chenforcode.homepage.entity.HomepageCourse; import org.springframework.data.jpa.repository.JpaRepository; public interface HomepageCourseRepository extends JpaRepository<HomepageCourse, Long> { }
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3197 引用 • 8215 回帖
  • 云计算
    79 引用 • 91 回帖 • 1 关注
  • homepage系列
    7 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 693 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 786 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 532 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 437 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 679 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 1 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 6 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 568 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    163 引用 • 309 回帖
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 99 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 296 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 41 回帖
  • Follow
    4 引用 • 12 回帖 • 10 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 811 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 679 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖
  • 印象笔记
    3 引用 • 16 回帖