spingcloud案例

一.项目结构

在这里插入图片描述

1、erueka-server

在这里插入图片描述

plication.properties

server.port=8761
spring.application.name=eureka
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

3.common-product

在这里插入图片描述

4、eureka-provider-one(two)

在这里插入图片描述

5、mapper

5.1、ProductsMapper

public interface ProductsMapper {
    //    按产品名称分页查询产品信息,查询所有产品列表
    List<Map<String,Object>> showData(Products products);

    //添加产品信息
    @Insert("INSERT INTO exam.products (productName, productDate, productSum, productDesc, productPrice) VALUES " +
            "(#{productName}, now(), #{productSum}, #{productDesc}, #{productPrice});")
    Integer add(Products products);
}

5.2、QualitiesMapper

public interface QualitiesMapper {
    //质检操作
    @Update("UPDATE exam.qualities SET score=#{score}, qualityDesc = #{qualityDesc} WHERE id = #{id};")
    Integer edit(Qualities qualities);
}

6、service

6.1、ProductsService

public interface ProductsService {
    //    按产品名称分页查询产品信息,查询所有产品列表
    List<Map<String,Object>> showData(Products products);
    //添加产品信息
    Integer add(Products products);
    //分页查询产品信息
    PageInfo<Map<String,Object>> showPage(Integer pageno,Products products);
}

6.2、QualitiesService

public interface QualitiesService {
    //质检操作
    @Update("UPDATE exam.qualities SET score=#{score}, qualityDesc = #{qualityDesc} WHERE id = #{id};")
    Integer edit(Qualities qualities);
}

6.3、ProductsServiceImpl

@Service
@Transactional
public class ProductsServiceImpl implements ProductsService {
    @Autowired
    private ProductsMapper productsMapper;
    @Override
    public List<Map<String, Object>> showData(Products products) {
        return productsMapper.showData(products);
    }
    @Override
    public Integer add(Products products) {
        return productsMapper.add(products);
    }
    @Override
    public PageInfo<Map<String, Object>> showPage(Integer pageno,Products products) {
        PageHelper.startPage(pageno,3);
        List<Map<String,Object>> list=productsMapper.showData(products);
        return new PageInfo<Map<String,Object>>(list);
    }
}

6.4、QualitiesServiceImpl

@Service
public class QualitiesServiceImpl implements QualitiesService {
    @Autowired
    private QualitiesMapper qualitiesMapper;
    @Override
    public Integer edit(Qualities qualities) {
        return qualitiesMapper.edit(qualities);
    }
}

7、resource》mapper

7.1、ProductsMapper.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.ProductsMapper">
    <select id="showData" parameterType="Products" resultType="map">
        SELECT q.score,p.* FROM products p,qualities q WHERE p.id=q.productId
        <if test="productName!=null">
           AND  p.productName=#{productName}
        </if>
        ORDER BY p.productDate DESC
    </select>
</mapper>application.properties

7.2、application.properties

server.port=87623)
spring.application.name=provider
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/exam
spring.datasource.username=root
spring.datasource.password=123.

mybatis.type-aliases-package=cn.kgc.vo
mybatis.mapper-locations=classpath:mapper/*.xml
pagehelper.helper-dialect=mysql

8、eureka-consumer

在这里插入图片描述
8.1、CenterController

@RestController
public class CenterController {
    @Autowired
    private ProQulFeign proQulFeign;
    //质检操作
    @RequestMapping("/edit.do")
    public String edit(@RequestBody Qualities qualities) {
        return proQulFeign.edit(qualities);
    }
    //查询所有产品列表
    @RequestMapping("/data.do")
    public String showData(@RequestBody Products products) {
        return proQulFeign.showData(products);
    }
    //添加产品信息
    @RequestMapping("/add.do")
    public String add(@RequestBody Products products) {
        return proQulFeign.add(products);
    }
    //按产品名称分页查询产品信息
    @RequestMapping("/page.do")
    public String showPage(@RequestParam("pageno") Integer pageno,@RequestBody Products products) {
        return proQulFeign.showPage(pageno,products);
    }
}

8.2、ProQulFeign

@FeignClient(name = "provider",fallback = ProQulFeignFallBack.class)
public interface ProQulFeign {
    //质检操作
    @RequestMapping("/edit.do")
    public String edit(@RequestBody Qualities qualities) ;
    //查询所有产品列表
    @RequestMapping("/data.do")
    public String showData(@RequestBody Products products) ;
    //添加产品信息
    @RequestMapping("/add.do")
    public String add(@RequestBody Products products) ;
    //按产品名称分页查询产品信息
    @RequestMapping("/page.do")
    public String showPage(@RequestParam("pageno") Integer pageno,@RequestBody Products products) ;
}

8.3、ProQulFeignFallBack

@Component
public class ProQulFeignFallBack implements ProQulFeign {
    @Override
    public String edit(Qualities qualities) {
        return "质检操作失败";
    }
    @Override
    public String showData(Products products) {
        return "查询所有产品列表失败";
    }
    @Override
    public String add(Products products) {
        return "添加产品信息失败";
    }
    @Override
    public String showPage(Integer pageno, Products products) {
        return "按产品名称分页查询产品信息失败";
    }
}

8.4、application.properties

server.port=8764
spring.application.name=consumer
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
pagehelper.helper-dialect=mysql
feign.hystrix.enabled=true
provider.ribbon.NFloadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

provider和consumer的pom.xml

<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.3</version>
		</dependency>
<dependency>
            <groupId>cn.kgc</groupId>
            <artifactId>common-product</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

9.eureka-zuul

在这里插入图片描述
application.properties

server.port=8765
spring.application.name=zuul
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
zuul.routes.provider=/pro/**/
zuul.routes.consumer=/con/**/

数据库

CREATE TABLE products(
  id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  productName VARCHAR(10) NOT NULL ,
  productDate VARCHAR(19) NOT NULL ,
  productSum INT(4) NOT NULL DEFAULT 0 ,
  productDesc VARCHAR(20),
  productPrice DOUBLE(5,2) NOT NULL DEFAULT 0
);

DROP TABLE qualities;
CREATE TABLE qualities(
  id INT(4) NOT NULL  AUTO_INCREMENT PRIMARY KEY ,
  score VARCHAR(3) NOT NULL ,
  qualityDesc VARCHAR(10),
  productId INT(4) NOT NULL
);

ALTER TABLE qualities ADD CONSTRAINT fk_qualities_products_productId
FOREIGN KEY (productId) REFERENCES products(id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值