部门服务提供者|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习部门服务提供者

开发者学堂课程【微服务框架 Spring Cloud 快速入门部门服务提供者】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/614/detail/9341


部门服务提供者

 

内容介绍

一、设置步骤

二、总结

 

一、设置步骤

1、新建 microservicecloud-provider-dept-8001

创建完成后回到父工程查看 pom 文件变化

<module> microservicecloud-provider-dept-8001</module>

父类子类直接继承,microservicecloud-provider-dept-8001进行构建。一般情况下,现在的开发基本上有这样一句算是业内通用的语言规则,约定大于配置大于编码,Maven中就有配置这样规则,所以说完成工程以后。第一步,以现在的开发思路,老师会带着大家教正确、规范、专业的构建思路和编码流程。建完maven 以后,不要先去编码,配置和约定,先去解决pom、resources 的配置问题,先解决软件环境的配置问题,再去编码。

2POMZ

<project xmIns= "http://maven.apache.org/PON/4.0.0” xmIns:xsi="http;/ow.w3.org/2001/XML Schema-instance"

xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion> 

<parent>

<groupId>com.atguigu.springcloud</groupId>

<artifactId>microservicecloud</ artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>   父类

<artifactId>microservicecloud-provider-dept-8001</artifactId>子类 8001这个子类继承了microservicecloud 这个父类,

<dependencies>

<dependency><! --引入自己定义的api通用包,可以使用 Dept部门 Entity -->  //在以往我们做工程时,如果自己的工程需要用到部门 Entity 会去新建一个 package cn.guigu. Entity 在里面放Dept.java。如果另外一个工程,也需要使用部门 entity,再放一个 Dept.java。每个工程干一份,只要知道一段代码重复了两次以上,公共部分提取出来。

<groupid>com.atguigu. springcloud</groupId>

<artifactId>microservicecloud-api</artifactId>

<version>${project.version}</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</ artifactId>

</dependency>  //解压mysql驱动包

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid< / artifactId>

</dependency>     //阿里巴巴的连接池

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-core</artifactId>

</dependency>     //日志

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</ artifactId>

</dependency> //mybatis整合

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jetty</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>  //boot的接器

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

</dependency>

<!--修改后立即生效,热部署-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>springloaded</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

</dependency>

</dependencies>

</project>

3YML

YML配置相关文件的安装和编写,只要是boot和相关的工程,都理解  application.yml

Server:

port: 8001

mybatis:    #整合

config- location: classpath:mybatis/mybatis.cfg.xml  

# mybatis配置文件所在路径

type-aliases-package:com.atguigu.springcloud.entities#所有Entity别名类所在包

mapper- locations :

- classpath:mybatis/mapper/**/*.xml   # mapper映射文件

Mybatis在dio层有两种解析方式一种是 xxxmap.xel 用配置的方式进行完成,第二种以注解的方式完成。以前写 DeptDao 时候,如果说没有使用 mybatis 框架一定会写 DeptDaoImpl,但是已经没有了DeptDaoImpl 而是写DeptMapper.xml。由 DeptMapper.xml 来完成增删改查这些功能,完成对 DeptDao 这个接口的落地实现。

spring:

application:

name:microservicecloud-dept// 对外暴露的微服务名字

datasource:

type:com.alibaba.druid.pool.DruidDataSource    #当前数据源操作类型

driver-class-name:org.gjt.mm.mysql.Driver   # mysql驱动包

url: jdbc:mysql://localhost:3306/cloudDB01    #数据库名称

username:root

password:123456

dbcp2:

min-idle: 5                #数据库连接池的最小维持连接数

initial-size: 5              #初始化连接数

max-total: 5                #最大连接数

max-wait-millis: 200        #等待连接获取的最大超时时间

4、工程 src/main/resources 目录下新建 mybatis 文件夹后新建mybatis.cfg.xml 文件

当第一次学习 mybatis only one 这个独立框架的时候了解到mybatis本身就有一些配置,但是与 spring 整合之后,几乎全部配置到 spring application cfg html 里,实际而言里面也没有什么,但是从标准的构建而言,还是有 mybatis 这个文件存在的。

<?xml version="1.0" encoding= "UTF-8" ?>

<!DOCTYPE conf iguration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis .org/dtd/mybatis-3-config.dtd">

<configuration>

<settings>

<setting name= "cacheEnabled" value="true"/><!--二级缓存开启-->

</settings>

</configuration>

5MySQL 创建部门数据库脚本

DROP DATABASE IF EXISTS cloudDB01;

CREATE DATABASE cloudDB01 CHARACTER SET UTF8;

USE cloudDB01 ;

CREATE TABLE dept

(

deptno  BIGINT NOT NULL PRIMARY KEY AUTO_ INCREMENT,

dname  VARCHAR(60) ,

db_ source  VARCHAR(60)

);

INSERT INTO dept(dname,db_source) VALUES(‘开发部,DATABASE());

INSERT INTO dept(dname,db_source) VALUES(‘人事部'’,DATABASE());

INSERT INTO dept(dname,db_source) VALUES(‘财务部' ,DATABASE());

INSERT INTO dept(dname,db_source) VALUES(‘市场部' ,DATABASE());

INSERT INTO dept(dname,db_source) VALUES(‘运维部', DATABASE());

数据源也叫做当前这条记录插进数据库的名字。

DATABASE 是 mysql 自带的函数跟 NOW,currdate 是一个意思。

把这段代码直接放到数据库当中,直接执行

执行结果:

image.png

一个微服务可以单独连一个数据库。

6DeptDao 部门接口

新建一个 Java Package 并命名为 com.atguigu.springcloud.dao,再建立一个 DeptDao

输入:

package com. atguigu.springcloud.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.atguigu.springcloud.entities.Dept;

//????????

@Mapper

public interface DeptDao

{

public boolean addDept(Dept dept);

public Dept findById(Long id);

public List<Dept> findAll();

}

7、工程 src/main/resources/mybatis 目录下新建 mapper 文件夹后再建 DeptMapper.xml

输入:

<?xml version="1. 0" encoding= "UTF-8" ?>

< !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis -3-mapper.dtd">

<mapper namespace="com.atguigu.springcloud.dao.

DeptDao">

<select id="findById" resultType="Dept" parameterType= "Long">

select deptno,dname,db_source from dept where deptno=#{ deptno};

</select>

<select id="findAlL" resultType= "Dept">

select deptno, dname ,db_ source from dept ;

</select>

<insert id= "addDept" parameterType= "Dept ">

INSERT INTO dept(dname,db_source) VALUES(#{dname},

DATABASE());

</insert>

</mapper>

点开 com.atguigu.springcloud.dao.DeptDao

里面有这三个方法

//????????

@Mapper

public interface DeptDao

{

public boolean addDept(Dept dept);

public Dept findById(Long id);

public List<Dept> findAll();

}

8DeptService 部门服务接口

从数据库到 DAO 接口,充分体会约定>配置>编码这句话。第一步做了pom,第二部做了 yml,第三步建了 SQL 脚本,第四步 Dao层和 Dao 层的实现,第五步进行相关 service 层的构建,因为 Dao 层有 DeptDao 所以 service 当中也有一个 DeptService 接口,里面内容为:

package com.atguigu.springcloud.service;

import java.util.List;

import com.atguigu.springcloud.entities.Dept;

public interface DeptService

{

public boolean add(Dept dept) ;

public Dept      get(Long id);

public List<Dept> list();

}

9DeptServicelmpl 部门服务接口实现类

package com.atguigu.springcloud.service.impl;

import java.util.List;

import com. atguigu. springc loud. entities .Dept;

import com. atguigu. springcloud. service . DeptService;

@Service

public class DeptServiceImpl implements DeptService

{

@Autowired

Private DeptDao dao;

@Override

public boolean add(Dept dept)

{

return dao.addDept(dept);

}

@Override

public Dept get(Long id)

{

return dao.findById(id);

}

@Override

public List<Dept> list()

{

return dao.findAll();

}

10DeptController 部门微服务提供者 REST

package com.atguigu.springcloud.controller;

import org.springframework.beans.factory.annotation.

Autowired;

Import org.springframework.web.bind.annotation.

RestController;

import com. atguigu. springcloud.service.DeptService;

@RestController

public class DeptController

{

@Autowired

private DeptService service;@RequestMapping(value="/dept/add",method=RequestMethod. POST)

public boolean add(@RequestBody Dept dept)

{

return service.add(dept);

}

@RequestMapping(value="/dept/get/{id}" ,method=RequestMethod .GET)

public Dept get(@PathVariabl("id") Long. id)

{

return service.get(id);

}@RequestMapping(value="/dept/list",method=RequestMethod. GET)

public List<Dept> list()

{

return service.list();

}

}

11DeptProvider8001_App 主启动类 DeptProvider800

1_App

package com.atguigu.springcloud;

import org.springframework . boot.SpringApplication;

import org.springframework.boot.autoconfigure.Spring

BootApplication;

@SpringBootApplication

public class DeptProvider8001 App

{

public static void main(String[ ] args)

{

SpringApplication.run(DeptProvider8001_App.class, args);

}

}

12测试

启动程序,如看到 Started DeptProvider8001_App in 2.8seconds在这启动,说明微服务架构成功。

如果有 com.cation 会默认 localhost 8080 但是现在是独立的。我们的默认端口是8001,所以浏览器输入 localhost:8001/dept/list

如果一切顺利,程序编码没有任何问题,就可以直接启动,在DeptController里的dept/list,就相当于访问底层 list,最终相当于执行 SELECT deptno, dname, db source FROM dept 这条语句,查出这五条记录。

执行之后浏览器显示结果:

image.png

刚好是五条记录

13、最终工程展现

 image.png


二、总结:

第一、新建 microservicecloud-provider-dept-8001

第二、形成肌肉化记忆,架构正确了,填细节才能充实,microservicecloud 先解决pom.xml。再次体会约定大于配置大于编码这句话,一定先把配置环境之类的解决掉,才能更好的编码。

Microservicecloud->application.yml->数据库脚本->DeptDao.java->DeptMapper.xml->DeptService.java->DeptServicelmpl.java->DeptCotoller.java->DeptProvider8001_App->浏览器里看到效果

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 负载均衡 算法
分布式注册服务中心
分布式注册服务中心
|
7月前
|
移动开发 前端开发 Java
基于jeecg-boot的flowable流程提供一种动态设置发起人部门负责人的方式
基于jeecg-boot的flowable流程提供一种动态设置发起人部门负责人的方式
140 0
|
JSON API 数据格式
要获取指定部门下的员工信息
要获取指定部门下的员工信息
73 1
|
JSON API 数据格式
获取指定部门下的员工信息,
获取指定部门下的员工信息,
97 1
|
前端开发 数据库
人事管理项目-员工资料模块
人事管理项目-员工资料模块
人事管理项目-员工资料模块
|
JSON 前端开发 数据库
人事管理项目-员工资料模块前端实现
人事管理项目-员工资料模块前端实现
|
XML 监控 前端开发
人事管理项目-部门数据删除
人事管理项目-部门数据删除
【氚云】在代码中,如何实现对人员和部门的调用?
在代码中,如何实现对人员和部门的调用?
278 0
|
人工智能 NoSQL Java
部门服务消费者|学习笔记
快速学习部门服务消费者
部门服务消费者|学习笔记
|
Java 数据库连接 API
将已有的部门微服务注册进 Eureka 服务中心|学习笔记
快速学习将已有的部门微服务注册进 Eureka 服务中心
将已有的部门微服务注册进 Eureka 服务中心|学习笔记