一、提供数据的客户端需要连接数据了,因此需要我们使用mybatis了,等下使用idea生成mybaits和web的依赖

二、提供数据的客户端项目

1.创建项目

2.选择idea自动给我们生成的依赖

3. 确认工程名称和模块名称

4.查看项目结构

5.修改pom的依赖

<dependencies>
<!--因为等下要用到数据访问层,因此我们可以应用我们刚才的公共组件-->
<dependency>
<groupId>cn.kgc</groupId>
<artifactId>eureka-common-school</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--修改生成的版本号-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

6.按照如下结构编写代码

7.编写数据访问层接口ClassesMapper

package cn.kgc.mapper;
import cn.kgc.vo.Classes;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface ClassesMapper {
@Select("select * from classes")
List<Classes> selectClasses();
}

8.编写数据访问层接口StudentMapper

package cn.kgc.mapper;

import cn.kgc.vo.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import java.util.List;
import java.util.Map; public interface StudentMapper {
//所有查询
List<Map<String,Object>> selectStudent(Student student); @Insert("INSERT INTO kgc.student (sname, password, subject, result, cid) VALUES (#{sname},#{password},#{subject},#{result},#{classes.cid})")
Integer insertStudent(Student student); @Update("UPDATE kgc.student SET sname =#{sname}, password =#{password}, subject =#{subject}, result =#{result}, cid =#{classes.cid} WHERE sid =#{sid}")
Integer updateStudent(Student student); @Delete("delete from sudent where sid=#{sid}")
Integer deleteStudent(Integer sid);
}

9.编写业务层接口ClassesService

package cn.kgc.service;

import cn.kgc.vo.Classes;

import java.util.List;
public interface ClassesService {
List<Classes> showOptions();
}

10..编写业务层接口StudentService

package cn.kgc.service;

import cn.kgc.vo.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Update; import java.util.List;
import java.util.Map; public interface StudentService {
//所有查询
List<Map<String,Object>> showData(); Map<String,Object> showInfo(Integer key); Map<String,Object> login(String sname,String password); Integer addData(Student student); Integer editData(Student student); Integer delData(Integer key);
}

11.编写业务层接口实现类ClassesServiceImpl

package cn.kgc.service;

import cn.kgc.mapper.ClassesMapper;
import cn.kgc.vo.Classes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class ClassesServiceImpl implements ClassesService{
@Autowired
private ClassesMapper mapper;
@Override
public List<Classes> showOptions() {
return mapper.selectClasses();
}
}

12.编写业务层接口实现类StudentServiceImpl

package cn.kgc.service;

import cn.kgc.mapper.StudentMapper;
import cn.kgc.vo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import java.util.List;
import java.util.Map;
@Service
public class StudentServiceImpl implements StudentService{
@Autowired
private StudentMapper mapper; @Override
public List<Map<String, Object>> showData() {
return mapper.selectStudent(new Student());
} @Override
public Map<String, Object> showInfo(Integer key) {
Student student=new Student(key,null,null,null,null,null);
Map<String, Object> map=mapper.selectStudent(student).get(0);
return map;
} @Override
public Map<String, Object> login(String sname, String password) {
Student student=new Student(null,sname,password,null,null,null);
Map<String, Object> map=mapper.selectStudent(student).get(0);
return map;
} @Override
public Integer addData(Student student) {
return mapper.insertStudent(student);
} @Override
public Integer editData(Student student) {
return mapper.updateStudent(student);
} @Override
public Integer delData(Integer key) {
return mapper.deleteStudent(key);
}
}

13.映射xml文件StudentMapper.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="cn.kgc.mapper.StudentMapper">
<select id="selectStudent" parameterType="Student" resultType="map">
SELECT s.*,c.cname from student s,classes c where s.sid=c.cid
<if test="sid!=null">
and s.sid=#{sid}
</if>
<if test="sname!=null and password!=null">
and s.sname=#{sname} and s.password=#{password}
</if>
</select>
</mapper>

14.编写属性配置文件application.properties

#eureka的相关配置
#使用feign时报错Service id not legal hostname(xx_sss)
#原因是feign不支持下划线"_",支持"-",改成xx-sss即可
#spring.application.name表示当前微服务注册到Eureka Server中的名字,同事需要制定Eureka Server地址
spring.application.name=client-school-provider
server.port=8762
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ #数据源相关配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.117.134:3306/kgc
spring.datasource.username=root
spring.datasource.password=ok #mybatis相关配置
#映射xml文件映射地址
mybatis.mapper-locations=mapper/*.xml
#别名配置
mybatis.type-aliases-package=cn.kgc.vo

15.编写控制类文件  CenterController

package cn.kgc.controller;

import cn.kgc.mapper.ClassesMapper;
import cn.kgc.service.ClassesService;
import cn.kgc.service.StudentService;
import cn.kgc.vo.Classes;
import cn.kgc.vo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List;
import java.util.Map; @RestController
public class CenterController {
@Autowired
private ClassesService classesService; @Autowired
private StudentService studentService; @RequestMapping("/options.do")
public List<Classes> optionsData() {
return classesService.showOptions();
} @RequestMapping("/data.do")
public List<Map<String, Object>> stuData() {
return studentService.showData();
} @RequestMapping("/info.do")
public Map<String, Object> infoData(Integer key) {
return studentService.showInfo(key);
} @RequestMapping("/login.do")
public Map<String, Object> login(String sname, String password) {
return studentService.login(sname,password);
} @RequestMapping("/add.do")
public Integer addData(Student student) {
return studentService.addData(student);
} @RequestMapping("/edit.do")
public Integer editData(Student student) {
return studentService.editData(student);
} @RequestMapping("/delete.do")
public Integer delData(Integer key) {
return studentService.delData(key);
}
}

16.编写启动类注解和扫描包路径

package cn.kgc;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient
@MapperScan("cn.kgc.mapper")
@SpringBootApplication
public class EurekaClientProviderApplication { public static void main(String[] args) {
SpringApplication.run(EurekaClientProviderApplication.class, args);
} }

17.启动你的eureka-server服务端,再启动eureka-client客户端,然后现查看服务器端是否收到客户端的注册信息

此帖子为原创

作者:红酒人生

转载请注明出处:https://www.cnblogs.com/holly8/p/11012773.html

springcloud(五):Eureka提供数据的客户端连接Docker的mysql的更多相关文章

  1. Docker客户端连接Docker Daemon的方式

    Docker为C/S架构,服务端为docker daemon,客户端为docker.service,支持本地unix socket域套接字通信与远程socket通信. 默认为本地unix socket ...

  2. Docker搭建mysql:5.7版本数据库

    搭建MySQL: 1.启动测试mysql,拷贝容器内配置文件到宿主机 mkdr -P /server/docker/mysql/{data,conf} docker run -e MYSQL_ROOT ...

  3. docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接

    花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...

  4. java框架之SpringCloud(3)-Eureka服务注册与发现

    在上一章节完成了一个简单的微服务案例,下面就通过在这个案例的基础上集成 Eureka 来学习 Eureka. 介绍 概述 Eureka 是 Netflix 的一个子模块,也是核心模块之一.Eureka ...

  5. 浅谈SpringCloud (二) Eureka服务发现组件

    上面学习到了如何由一个程序访问另一个程序,那么如果使用SpringCloud来进行访问,该如何访问呐? 可以借助Eureka服务发现组件进行访问. 可以借助官方文档:https://spring.io ...

  6. SpringCloud之Eureka服务注册与发现(一)

    一 Eureka的基本架构 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构 ...

  7. SpringCloud:Eureka服务注册与发现

    1.Eureka简介 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构.Eu ...

  8. 三(1)、springcloud之Eureka服务注册与发现

    1.认识Eureka ​ Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架 ...

  9. springcloud之Eureka注册中心

    参考博客:https://www.cnblogs.com/ityouknow/p/6854805.html 背景: Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Ser ...

随机推荐

  1. 51nod 1353 树

    树背包 设f[i][j]表示第i个点,和子节点组成的联通块大小为j,其他都可行的方案 j=0表示可行的总方案 #include<cstdio> #include<iostream&g ...

  2. 【POJ 2965】 The Pilots Brothers' refrigerator

    [题目链接] http://poj.org/problem?id=2965 [算法] 位运算 [代码] #include <algorithm> #include <bitset&g ...

  3. 【POJ 3784】 Running Median

    [题目链接] http://poj.org/problem?id=3784 [算法] 对顶堆算法 要求动态维护中位数,我们可以将1-M/2(向下取整)小的数放在大根堆中,M/2+1-M小的数放在小根堆 ...

  4. LCT教程

    lct是一种动态树,用来维护一些动态加边删边的操作的东西.他主要用到几个操作,其实这个算法和树链刨分有点像,但是不能用线段树简单维护,所以我们要用多棵平衡树来维护树上的一个个子树,然后就进行一些很秀的 ...

  5. Spark 机器学习 ---CountVectorizer

    文本特征提取->> CountVectorizer:基于词频数的文档向量 package Spark_MLlib import org.apache.spark.ml.feature.Co ...

  6. 这里有最全的C/C++入门到进阶书籍推荐,你需要嘛?

    编程是操作性很强的一门知识,看书少不了,但只有学习和实践相结合才能起到很好的效果,一种学习方法是看视频->看书->研究书中例子->自己做些东西->交流->看书. 研究经典 ...

  7. Codeforces 903G 巧妙的线段树

    思路: 巧妙的线段树 想方法将网络流往数据结构方向转化 http://www.cnblogs.com/yyf0309/p/8724558.html //By SiriusRen #include &l ...

  8. python--11、协程

    协程,又称微线程,纤程.英文名Coroutine. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕. 所以子程 ...

  9. Android之Glide获取图片Path和Glide获取图片Bitmap

    今天主要研究了Glide获取图片Path.Bitmap用法,相信也困扰了大家很久,我在网上也找了很久,基本没有,后来研究了下,也参考了下api文档,总结了以下几个方式: 1. 获取Bitmap: 1) ...

  10. [转][IPC通信]基于管道的popen和pclose函数

    标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行. 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程. popen函数还创建一个管道用于父子进 ...