搭建服务模块为了模拟正式开发环境,只是少写了service层直接在controller里面直接引用,直接上图和代码:更为方便:

创建完成之后加入配置:

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"><parent><artifactId>springcloud-parent</artifactId><groupId>com.cxy</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><packaging>jar</packaging><artifactId>spring-person</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><!--千万注意,不要写成spring-cloud-netflix-eureka-client,写成这样不会报错,但是注册不了服务--><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version></dependency></dependencies><executions><execution><id>mybatis generator</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允许移动生产的文件--><verbose>true</verbose><!--允许自动覆盖文件,在开发者不可以设置为true--><overwrite>true</overwrite><!--制定生产文件的位置--><configurationFile>src/main/resources/mybatis_generator.xml</configurationFile></configuration></plugin></plugins></build>
</project>

这个插件中加入了自动生成代码插件:

mybatis_generator.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration><!--驱动包的路径--><!--<classPathEntry location="F:\maven\repos\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar"/>--><context id="DB2Tables" targetRuntime="MyBatis3"><!--注释--><commentGenerator><property name="suppressAllComments" value="true"/><property name="suppressDate" value="true"/></commentGenerator><!--数据库连接--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/fr_db?zeroDateTimeBehavior=convertToNull&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8"
                        userId="root"password="1234"/><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--生成Model类存放位置--><javaModelGenerator targetPackage="com.cxy.dataObject" targetProject="src/main/java"><!--是否对model添加构造函数--><property name="constructorBased" value="false"/><!--是否允许子包--><property name="enableSubPackages" value="true"/><!--建立的model对象是否不可变,也就是生成的model没有setter方法--><property name="immutable" value="false"/><property name="trimStrings" value="false"/></javaModelGenerator><!--生成映射文件存放位置--><sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--生成Mapper类存放位置--><javaClientGenerator type="XMLMAPPER" targetPackage="com.cxy.dao" targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--生成与表对应的类名--><table tableName="person" domainObjectName="PersonDo" enableCountByExample="false"enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false"></table></context></generatorConfiguration>

yml文件:

eureka:client:serviceUrl:defaultZone: http://127.0.0.1:8761/eureka/  #eureka注册中心地址
spring:application:name: cxy-person-service #应用名#datasource,数据连接datasource:driver-class-name: com.mysql.jdbc.Driverurl : jdbc:mysql://127.0.0.1:3306/fr_db?zeroDateTimeBehavior=convertToNull&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8password: 1234username: root#mybatis
mybatis:type-aliases-package: com.cxy.dataObject #实体类映射文件包mapper-locations: classpath:mapping/*.xml #生成的sql语句
server:port: 8081

笔者在这个文件配置时候出现很多问题,慢慢的解决了,

注意yml文件格式

启动类:

package com.cxy;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/**** @ClassName: PersonApplication* @Description:* @Auther: 陈绪友* @Date: 2019/1/2816:30* @version : V1.0*/
@SpringBootApplication
@EnableEurekaClient  //开启注解,注册服务
@MapperScan("com.cxy.dao")
public class PersonApplication {public static void main(String[] args) {SpringApplication.run(PersonApplication.class,args);}
}

controller

package com.cxy.controller;import com.cxy.dao.PersonDoMapper;
import com.cxy.dataObject.PersonDo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;/**** @ClassName: PersonController* @Description:* @Auther: 陈绪友* @Date: 2019/1/2816:31* @version : V1.0*/
@RequestMapping("/person")
@RestController
public class PersonController {@Autowiredprivate PersonDoMapper personDoMapper;@RequestMapping(value = "{id}",method = RequestMethod.GET) 

  public PersonDo selectPersonDoByid(@PathVariable Integer id){ 

    return personDoMapper.selectByPrimaryKey(id); }   @RequestMapping(value = "{id}",method = RequestMethod.DELETE) 

  public Integer deletePersonDoByid(@PathVariable Integer id){ 

    return personDoMapper.deleteByPrimaryKey(id); } }

dao

package com.cxy.dao;import com.cxy.dataObject.PersonDo;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface PersonDoMapper {int deleteByPrimaryKey(Integer id);int insert(PersonDo record);int insertSelective(PersonDo record);PersonDo selectByPrimaryKey(Integer id);int updateByPrimaryKeySelective(PersonDo record);int updateByPrimaryKey(PersonDo record);
}

pojo:个人喜欢叫做数据库数据模型,在正式开发中和这个是不可以直接返回给前端的,是需要进行封装给前端的

po,对应的数据库数据模型

dto 返回给前端的数据模型,即就是页面展示的模型

vo 是前端传输过来给后台的模型

package com.cxy.dataObject;public class PersonDo {private Integer id;private String name;private Integer age;private String address;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

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.cxy.dao.PersonDoMapper"><resultMap id="BaseResultMap" type="com.cxy.dataObject.PersonDo"><id column="id" jdbcType="INTEGER" property="id" /><result column="name" jdbcType="VARCHAR" property="name" /><result column="age" jdbcType="INTEGER" property="age" /><result column="address" jdbcType="VARCHAR" property="address" /></resultMap><sql id="Base_Column_List">id, name, age, address</sql><select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">select <include refid="Base_Column_List" />from personwhere id = #{id,jdbcType=INTEGER}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">delete from personwhere id = #{id,jdbcType=INTEGER}</delete><insert id="insert" parameterType="com.cxy.dataObject.PersonDo">insert into person (id, name, age, address)values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{address,jdbcType=VARCHAR})</insert><insert id="insertSelective" parameterType="com.cxy.dataObject.PersonDo">insert into person<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if><if test="name != null">name,</if><if test="age != null">age,</if><if test="address != null">address,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="id != null">#{id,jdbcType=INTEGER},</if><if test="name != null">#{name,jdbcType=VARCHAR},</if><if test="age != null">#{age,jdbcType=INTEGER},</if><if test="address != null">#{address,jdbcType=VARCHAR},</if></trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.cxy.dataObject.PersonDo">update person<set><if test="name != null">name = #{name,jdbcType=VARCHAR},</if><if test="age != null">age = #{age,jdbcType=INTEGER},</if><if test="address != null">address = #{address,jdbcType=VARCHAR},</if></set>where id = #{id,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.cxy.dataObject.PersonDo">update personset name = #{name,jdbcType=VARCHAR},age = #{age,jdbcType=INTEGER},address = #{address,jdbcType=VARCHAR}where id = #{id,jdbcType=INTEGER}</update>
</mapper>

这个是代码生成命令的截图

启动服务:

进入注册中心查看:

在此服务注册就完成了,那么远程是如何进行调用的呢,下接将会整合opnfeign进行服务调用,当然传统的httpclient,restemplate都是可以进行服务调用的

传统的方法就不调用了,比较繁琐,

转载于:https://www.cnblogs.com/xiufengchen/p/10331030.html

springcloud系列三 搭建服务模块相关推荐

  1. springcloud系列四 搭建服务模块重点讲解

    首先这个服务地址:一定不要写错,是自己注册中心开启的地址 如果注意到这些了,可以简单的进行操作,也可以不需要mybatis与数据库连接,在controller里直接返回相应的数据可以了,不用这么幸苦的 ...

  2. SpringCloud系列研究---Eureka服务消费Feign

    转载自:https://www.cnblogs.com/chxuyuan/p/8358998.html SpringCloud系列研究---Eureka服务消费Feign 一.Feign简介 Feig ...

  3. J360-cloud SpringCloud系列二:服务发现Discovery Service

    2019独角兽企业重金招聘Python工程师标准>>> j360开源博客之 ----------------------------------------------------- ...

  4. 巧玩SpringCloud——使用Eureka搭建服务注册中心与服务发现

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/84549747 本文出自[我是干勾鱼的博客] Ingredient: Java:J ...

  5. SpringCloud系列:分布式服务调用链跟踪整合Zipkin、RabbitMQ、Elasticsearch(二)

    2019独角兽企业重金招聘Python工程师标准>>> 一.概述 RabbitMQ用于的服务和Zipkin服务端的通信,代替服务和Zipkin服务端通过http协议的通信,实现了微服 ...

  6. SpringCloud系列之Eureka服务注册及发现

    Eureka 1. Eureka简介 1.1 什么是Eureka 2. Eureka实例 2.1 编写Eureka Server 2.2 编写Eureka Client 3. Eureka源码解析 3 ...

  7. 你必须懂也可以懂的微服务系列三:服务调用

    在了解服务注册与反注册后,就该到服务调用环节了. 进行服务调用之前,需要组装请求头.请求体,构建客户端对象,通过服务提供方url地址调用远程服务.此方式虽然可以实现远程调用,但是需要使用者了解底层调用 ...

  8. dubbo系列三、 服务发现RegistryDirectory

    文章目录 dubbo服务发现-RegistryDirectory 1.前言 2.RegistryDirectory结构 3.源码分析 4.总结的流程图 5.结语 6.服务内方法重载了,会有影响吗? d ...

  9. SpringCloud系列(三) 创建Euraka客户端

    公众号 关注公众号和我一起学习哦! 创建客户端的目的只是 确保可以正确无误的连接上 注册中心 1. 创建一个新的模块 选择SpringBoot项目 名称为: spring-cloud-netflix- ...

最新文章

  1. Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件
  2. Mongodb异常关闭重启失败解决
  3. SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
  4. struts2文件下载及 param name=inputNameinputStream/param的理解
  5. 在Python中使用XGBoost
  6. python scatter参数详解_python matplotlib.scatter 用法
  7. python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...
  8. linux进程号函数,linux进程
  9. java中runnable_Java中Runnable和Thread的区别
  10. 20101022网站更新部署
  11. 小米电视3s测试软件,小米盒子3s开箱评测 三大装机必备软件可看凤凰卫视
  12. 也说上海女孩的嗲----
  13. FBreader问题记录及多端同步心得开篇
  14. 快速删除node_modules文件夹:rimraf node_modules
  15. 数据链路层(一、二)——差错控制
  16. 白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致
  17. 第一回 网管是个苦差事
  18. Python能不能只选择合并一个excel当中指定的sheet 当中指定的列呢?
  19. flume多节点集群搭建
  20. 使用virt-install创建虚拟机

热门文章

  1. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
  2. MySQL 数据还原
  3. 详解 Spotlight on MySQL监控MySQL服务器
  4. oracle数据库导入和导出
  5. Windbg命令学习6(!runaway和~)
  6. docker oracle 11g
  7. Hive的内置数据类型
  8. 软件公司管理基本原则
  9. 采用多播传送FIX行情数据的推荐方案
  10. RUNOOB python练习题 23 使用*号输出菱形