springcloud系列三 搭建服务模块

搭建服务模块为了模拟正式开发环境,只是少写了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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1801 黑匣子_NOI导刊2010提高(06)

题目描述 Black Box是一种原始的数据库。它可以储存一个整数数组&#xff0c;还有一个特别的变量i。最开始的时候Black Box是空的&#xff0e;而i等于0。这个Black Box要处理一串命令。 命令只有两种&#xff1a; ADD(x):把x元素放进BlackBox; GET:i加1&#xff0c;然后输出Bla…

MySql模糊查询

常规like的使用限制&#xff1a; 1. like %keyword &#xff1a;索引失效&#xff0c;使用全表扫描。但可以通过翻转函数like前模糊查询建立翻转函数索引走翻转函数索引&#xff0c;不走全表扫描。 2. like keyword% &#xff1a;索引有效。 3. like %keyword% &#xff1a;索引…

python psycopg2使用_python 操作数据库:psycopg2的使用

1 conn psycopg2.connect(database"testdb", user"postgres",password"cohondob", host"127.0.0.1", port"5432")这个API打开一个连接到PostgreSQL数据库。如果成功打开数据库时&#xff0c;它返回一个连接对象。2cursor c…

软件测试人员棘手的问题,Èí¼þ²âÊԵļ¬ÊÖÎÊÌ⣺ÈçºÎ±ÜÃâÖØ¸´ÌύȱÏÝ...

¡¡¡¡£££©£¡££¡££££©©£¡¡¡¡¡BUG£££¢¡£££¡££¡£¡£——£…

机器学习实用指南_机器学习方法:实用指南

机器学习实用指南by Karlijn Willems通过Karlijn Willems 机器学习方法&#xff1a;实用指南 (How Machines Learn: A Practical Guide) You may have heard about machine learning from interesting applications like spam filtering, optical character recognition, and …

本地仓库settings.xml中使用阿里的仓库

背景 当前使用eclipse自带的maven碰到两个蛋疼的问题&#xff1a; maven在国内使用如果不进行FQ则会痛苦不堪如便秘。maven下载大量jar包导致某盘不够用&#xff0c;需要换大的分区。因此为了解决这个问题就介绍两个eclipse配置&#xff1a;maven本地路径配置和maven外部路径配…

day6_python之md5加密

#md5是不可逆的&#xff0c;就是没有办法解密的 Python内置哈希库对字符串进行MD5加密的方法-hashlibimport hashlib def my_md5(s,salt): #用函数&#xff0c;为了提高代码的复用率s ssalt #1.必须是字符串news str(s).encode() #2.字符串需要encode编码后&#xff0…

异步服务_微服务全链路异步化实践

1. 背景随着公司业务的发展&#xff0c;核心服务流量越来越大&#xff0c;使用到的资源也越来越多。在微服务架构体系中&#xff0c;大部分的业务是基于Java 语言实现的&#xff0c;受限于Java 的线程实现&#xff0c;一个Java 线程映射到一个kernel 线程&#xff0c;造成了高并…

win7打开计算机死机,怎么样解决Win7系统运行程序引起的死机问题

Win7系统不仅需要使用到电脑中自带的一些程序&#xff0c;同时&#xff0c;也需要在win7旗舰版电脑中有选择的自己去安装一些程序。但是经常有用户会碰到Win7电脑突然跳出运行程序未响应&#xff0c;出现电脑死机的情况&#xff0c;特别是开的浏览器窗口多的时候更是死机的频繁…

(poj)1064 Cable master 二分+精度

题目链接&#xff1a;http://poj.org/problem?id1064 DescriptionInhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Committee has volunteered and has promised to organize the most honest contest ever. It was decided…

PHP中如何解决高并发

PHP中如何解决高并发 1&#xff1a;硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP&#xff0c;如果访问量超过10W那么需要专用的服务器才能解决&#xff0c;如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有&#xff1a;网络-硬盘读写速度…

es6 迭代器_揭秘ES6迭代器和迭代器

es6 迭代器by Tiago Lopes Ferreira由Tiago Lopes Ferreira 揭秘ES6迭代器和迭代器 (Demystifying ES6 Iterables & Iterators) ES6 introduces a new way to interact with JavaScript data structures — iteration. Let’s demystify it.ES6引入了一种与JavaScript数据…

JS之this与语句分号问题v(**V**)v

1 <script >2 //this知识 单词知识&#xff1a;property&#xff1a;属性 prototype&#xff1a;原型3 //*Q&#xff1a;什么是this&#xff1f;4 //*A&#xff1a;所有函数内部都有一个this&#xff0c;任何函数本质上都是通过某个对象来调用的&#xff0c;…

计算机联系函范文,致客户联络函

致客户联络函 相关内容:收到贵支部所发的“函调证明”通知&#xff0c;很高兴我校毕业生xxx同学能成为贵支部的党员发展对象&#xff0c;现对其在我校上学其间的表现证明如下&#xff1a;xxx&#xff0c;女&#xff0c;xxx年7月28日生&#xff0c;团员&#xff0c;XX年8月——X…

c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈

这个代码运行时只能输入4个以内的数有输出4个以上就没有输出了求大神看看#include#include#defineStack_Size50typedefstructSeqstack{intelem[Stack_Size];inttop...这个代码运行时只能输入4个以内的数有输出 4个以上就没有输出了 求大神看看 #include #include #define Stack…

P1401 城市(30分,正解网络流)

题目描述 N(2<n<200)个城市&#xff0c;M(1<m<40000)条无向边&#xff0c;你要找T(1<T<200)条从城市1到城市N的路&#xff0c;使得最长的边的长度最小&#xff0c;边不能重复用。 输入输出格式 输入格式&#xff1a; 第1行三个整数N,M,T用空格隔开。 第2行到…

sqlserver游标概念与实例全面解说

引言 我们先不讲游标的什么概念&#xff0c;步骤及语法&#xff0c;先来看一个例子&#xff1a; 表一 OriginSalary 表二 AddSalary 现在有2张表&#xff0c;一张是OriginSalary表--工资表&#xff0c;有三个字段0_ID 员工…

为什么Docker对初创企业有意义

by Charly Vega查理维加(Charly Vega) 为什么Docker对初创企业有意义 (Why Docker makes sense for startups) Docker is becoming the standard to develop and run containerized applications.Docker正在成为开发和运行容器化应用程序的标准。 Long ago, this piece of te…

MyEclipse中Maven Web项目部署路径设置

转载于:https://www.cnblogs.com/langzichanglu/p/10336805.html

小米电视联网后显示无法解析小米电视服务器,小米电视连上无线不能上网怎么回事?教你解决办法...

原标题&#xff1a;小米电视连上无线不能上网怎么回事&#xff1f;教你解决办法互联网电视凭借在线观看影视剧这个独有的优势受到越来越多家庭的喜爱。特别是配置不俗的小米电视&#xff0c;然而随之而来的的问题也让很多用户头疼&#xff0c;比如家里的小米电视突然上不了网了…