13.(微服务架构)zookeeper+springboot+mybatis+dubbo的整合步骤
1、构建数据库【数据随意】
--1.创建部门表 create table dept ( deptno int(2) unsigned primary key, dname varchar(14), loc varchar(13) ); --2.添加部门数据 insert into dept(deptno,dname,loc) values (10,'ACCOUNTING','NEW YORK'), (20,'RESEARCH','DALLAS'), (30,'SALES','CHICAGO'), (40,'OPERATIONS','BOSTON'); --3.创建员工表 create table emp ( empno int(4) unsigned primary key, ename varchar(10), job varchar(9), mgr int(4), hiredate date, sal double(7,2), comm double(7,2), deptno int(2) references dept(deptno) ); --4.插入数据员工数据 insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20), (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30), (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30), (7566,'JONES','MANAGER',7839,'1981-04-02',2975,null,20), (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30), (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,null,30), (7782,'BLAKE','MANAGER',7839,'1981-06-09',2450,null,10), (7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,null,20), (7839,'KING','PRESIDENT',null,'1981-11-17',5000,null,10), (7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30), (7876,'ADAMS','CLERK',7788,'1987-05-23',1100,null,20), (7900,'JAMES','CLERK',7698,'1981-12-03',950,null,30), (7902,'FORD','ANALYST',7566,'1981-12-03',3000,null,20), (7934,'MILLER','CLERK',7782,'1982-01-23',1300,null,10); --3.员工福利表 create table bonus ( ename varchar(10), job varchar(9), sal double(7,2), comm double(7,2) ); --4.工资等级表 create table salgrade ( grade int(10), losal double(7,2), hisal double(7,2) ); --5.插入工资等级信息 insert into salgrade(grade,losal,hisal) values (1,700,1200), (2,1201,1400), (3,1401,2000), (4,2001,3000), (5,3001,9999);
2、构建父级项目
配置pom.xml文件
<?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"> <modelVersion>4.0.0</modelVersion> <groupId>cn.holly</groupId> <artifactId>wf2024</artifactId> <version>1.0-SNAPSHOT</version> <name>wf2024</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.release>17</maven.compiler.release> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.11.0</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <scope>test</scope> </dependency> <!-- Optionally: parameterized tests support --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
4、创建common模块
4.1 编写vo持久化类
(1) Dept.java
package cn.holly.vo; import java.io.Serializable; public class Dept implements Serializable { private Integer deptno; private String dname; private String loc; public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } @Override public String toString() { return "Dept{" + "deptno=" + deptno + ", dname='" + dname + '\'' + ", loc='" + loc + '\'' + '}'; } }
(2) Emp.java
package cn.holly.vo; import java.io.Serializable; public class Emp implements Serializable{ private Integer empno; private String ename; private String job; private Integer mgr; private String hiredate; private Double sal; private Double comm; private Integer deptno; public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public String getHiredate() { return hiredate; } public void setHiredate(String hiredate) { this.hiredate = hiredate; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public Double getComm() { return comm; } public void setComm(Double comm) { this.comm = comm; } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } @Override public String toString() { return "Emp{" + "empno=" + empno + ", ename='" + ename + '\'' + ", job='" + job + '\'' + ", mgr=" + mgr + ", hiredate='" + hiredate + '\'' + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + '}'; } }
4.2 编写service接口
(1)EmpService.java
package cn.holly.service; import cn.holly.vo.Emp; import com.github.pagehelper.PageInfo; import java.util.Map; /** * Created by Administrator on 2020/6/8. */ public interface EmpService { /*各种查询 * PageInfo分页插件查询,原理是底层帮你自动做分页,在你查询所有的基础上做分页, * 如果你查询所有返回值的类型是vo对象类型,则此处PageInfo的返回值类型为具体vo对象类型 * 如果你查询所有返回值的类型是map类型,则此处PageInfo的返回值类型为map类型*/ PageInfo<Map<String,Object>> showData(Integer pageno, Emp emp); int addEmp(Emp emp); int editEmp(Emp emp); int delEmp(Integer empno); }
(2)DeptService.java
package cn.holly.service; import java.util.List; import java.util.Map; /** * Created by Administrator on 2020/6/8. */ public interface DeptService { List<Map<String,Object>> optionData(); }
5、创建provider(微服的提供者)
cn
5.1 创建服务接口
5.2 创建服务接口的实现类
5.3 创建实体(注意必须要序列化)
5.4 创建mapper接口
5.5 创建mapper接口的映射文件
5.6 编写对应代码
5.7 创建spring-provider.xml(暴露接口的配置文件)
5.8 导入jar包
ps:以上步骤随意
3、创建consumer(服务的消费端)
- 创建服务接口(注意路径和类名以及方法名必须一模一样,可以复制provider工程中对应的东东)
- 创建控制器类 最后使用html+ajax 还是thymeleaf 各位随意
- 导入的jar包和服务提供者一样
- 最后启动服务提供者和消费端 检查结果
- 注意提供者的端口和消费者的端口设置不可以一样