一.项目结构
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=8762(3)
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);