1.新建父工程
2.点击File - settings - Build Tools - Maven ,这里的Maven路径选择自己本地的maven路径。
3.Editor - File Types,末尾加上“.idea;.iml;”,设置隐藏impl文件和.idea文件;
4.File - settings - Build - Complier - Java Complier ,需要将编译版本设置为1.8;
5.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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.elio.springcloud</groupId>
<artifactId>springcloudtest</artifactId>
<version>1.0-SNAPSHOT</version>
<!--统一管理jar包版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.12</junit.version>
<lombok.version>1.18.10</lombok.version>
<log4j.version>1.2.17</log4j.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!--子模块继承之后,提供作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement><!--定义规范,但不导入-->
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</dependency>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 阿里巴巴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--热启动插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
6.创建子工程
点击finish后,我们可以看到构建成功的子项目
7.添加商品服务提供者的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</artifactId>
<groupId>com.sdltxjt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-product-provider-8100</artifactId>
<dependencies>
<!--eureka-client -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!-- </dependency>-->
<!--config-client -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-config-client</artifactId>-->
<!-- </dependency>-->
<!--消息总线bus-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-bus-amqp</artifactId>-->
<!-- </dependency>-->
<!--spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--hystrix -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>-->
<!-- </dependency>-->
<!-- actuator监控信息完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--commom-api -->
<!-- <dependency>-->
<!-- <groupId>com.elio.springcloud</groupId>-->
<!-- <artifactId>springcloud-common-api</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- </dependency>-->
</dependencies>
<!--热启动插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
8.右键商品服务提供者项目的resources文件夹,新增application.yml配置文件,新增之后application.yml前面有个绿色的小叶子标识
server:
port: 8100 #端口号
spring:
application:
name: springcloud-product-provider-8100
datasource:
url: jdbc:mysql://192.168.9.202:18080/springcloud?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
driverClassName: com.mysql.jdbc.Driver
username: root
password: 123***
mybatis:
mapper-locations: classpath:mapping/*mapper.xml # Mybatis 映射文件位置
type-aliases-package: com.sdltxjt.springcloud.entity # 表对应的实体类包
9.右键java文件夹新增,实体类Product,这将是我们接下来的product表对应的实体类
package com.sdltxjt.springcloud.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class Product {
private Long id; //自增id
private String name;// 产品名称
private int stock;// 库存
}
10.新增dao层接口ProductMapper
package com.sdltxjt.springcloud.dao;
import com.sdltxjt.springcloud.entity.Product ;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductMapper {
/**
* 查询
* @param id
* @return
*/
public Product selectById(@Param("id") Long id);
/**
* 删除
* @param id
* @return
*/
public int deleteById(@Param("id") Long id);
/**
* 修改
* @param id
* @param name
* @return
*/
public int updateById(@Param("id") Long id, @Param("name") String name);
/**
* 新增
* @param product
* @return
*/
public int insertOne(Product product);
}
11.右键resources文件,新增mapping\product_mapper.xml文件,这个是product表对应的sql文件,包含简单的增删改查
<?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.sdltxjt.springcloud.dao.ProductMapper">
<resultMap id="BaseResultMap" type="com.sdltxjt.springcloud.entity.Product">
<result column="id" jdbcType="BIGINT" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="stock" jdbcType="INTEGER" property="stock" />
</resultMap>
<!--查询-->
<select id="selectById" resultType="Product">
select * from product where id = #{id}
</select>
<!--删除-->
<delete id="deleteById" parameterType="Long">
delete from product where id = #{id}
</delete>
<!--修改-->
<update id="updateById" parameterType="Product">
update product set name = #{name} where id = #{id}
</update>
<!--新增-->
<insert id="insertOne" parameterType="Product">
insert into product(name, stock) values (#{name}, #{stock})
</insert>
</mapper>
12.新增ProductService.java文件
package com.sdltxjt.springcloud.service;
import com.sdltxjt.springcloud.entity.Product;
import org.apache.ibatis.annotations.Param;
/**
* 商品服务类
*/
public interface ProductService {
/**
* 查询
* @param id
* @return
*/
public Product selectById(Long id);
/**
* 删除
* @param id
* @return
*/
public int deleteById(Long id);
/**
* 修改
* @param id
* @param name
* @return
*/
public int updateById(Long id, String name);
/**
* 新增
* @param product
* @return
*/
public int insertOne(Product product);
}
13.新增ProductServiceImpl.java 类
package com.sdltxjt.springcloud.service.impl;
import com.sdltxjt.springcloud.dao.ProductMapper;
import com.sdltxjt.springcloud.entity.Product;
import com.sdltxjt.springcloud.service.ProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class ProductServiceImpl implements ProductService {
@Resource
private ProductMapper productMapper;
@Override
public Product selectById(Long id) {
return productMapper.selectById(id);
}
@Override
public int deleteById(Long id) {
return productMapper.deleteById(id);
}
@Override
public int updateById(Long id, String name) {
return productMapper.updateById(id, name);
}
@Override
public int insertOne(Product product) {
return productMapper.insertOne(product);
}
}
14.新增Result.java
package com.sdltxjt.springcloud.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
public class Result {
private int code;
private String message;
private Object result;
}
15.新增ProductProviderController.java
package com.sdltxjt.springcloud.controller;
import com.sdltxjt.springcloud.dto.Result;
import com.sdltxjt.springcloud.entity.Product;
import com.sdltxjt.springcloud.service.ProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@Slf4j
@RequestMapping("/")
public class ProductProviderController {
@Resource
private ProductService productService;
/**
* 查询
* @param id
* @return
*/
@GetMapping("product/provider/get/{id}")
public Result selectById(@PathVariable("id") Long id){
return new Result(200, "查询成功", productService.selectById(id));
}
/**
* 删除
* @param id
* @return
*/
@GetMapping("product/provider/delete/{id}")
public Result deleteById(@PathVariable("id") Long id){
return new Result(200, "删除成功", productService.deleteById(id));
}
/**
* 修改
* @param product
* @return
*/
@PostMapping("product/provider/update")
public Result updateById(@RequestBody Product product){
return new Result(200, "修改成功", productService.updateById(product.getId(), product.getName()));
}
/**
* 新增
* @return
*/
@PutMapping( "product/provider/add")
public Result insertById(@RequestBody Product product){
return new Result(200, "修改成功", productService.insertOne(product));
}
}
16.右键java文件夹,新增主启动类ProductProvider8100
ProductProvider8100内容如下,加上@SpringBootApplication和MapperScan注解
package com.sdltxjt.springcloud;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.sdltxjt.springcloud.dao")
public class ProductProvider8100 {
public static void main(String[] args){
SpringApplication.run(ProductProvider8100.class, args);
}
}
17.创建表结构
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`stock` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
18.至此微服务的商品提供者我们已经创建成功,接下来就是测试该提供者了,启动类ProductProvider8100上右键Run
19.浏览器地址输入 http://localhost:8100/product/provider/get/1