根据笔记,我们首先在cahnggou-service-api模块下,创建一个changgou-service-goods-api工程,同时pom.xml引入如下依赖:
<dependencies>
<!--通用的common-->
<dependency>
<groupId>com.changgou</groupId>
<artifactId>changgou-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--每个工程都有Pojo,都需要用到该包对应的注解-->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
`
然后在changgou-service-goods-api模块下创建com.changgou.goods.pojo包,把pojo类复制进去:
这里需要注意的是,复制进来的pojo类有可能全部会报错找不到依赖包,这时候需要在IDEA右侧的MAVEN工具栏点一下刷新
因为changgou-common-db的依赖在很多service模块会被使用,所以我们这里直接在changgou-service模块引入它:
<!--依赖-->
<dependencies>
<dependency>
<groupId>com.changgou</groupId>
<artifactId>changgou-common-db</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
然后创建一个changgou-service-goods模块,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>changgou-service</artifactId>
<groupId>com.changgou</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>changgou-service-goods</artifactId>
<!--依赖-->
<dependencies>
<dependency>
<groupId>com.changgou</groupId>
<artifactId>changgou-service-goods-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
然后在resource下创建application.yml配置文件
server:
port: 18081
spring:
application:
name: goods
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.211.132:3306/changgou_goods?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
instance:
prefer-ip-address: true
feign:
hystrix:
enabled: true
# 使用tk,mybatis可以不配置
mybatis:
# spring boot集成mybatis的方式打印sql
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
稍有不同的是,我这里配置了spring boot集成mybatis的方式打印sql,使得在测试的时候更清晰。
然后是创建包dao,在包内创建BrandMapper,Mapper代码如下:
package com.changgou.goods.dao;
import com.changgou.goods.pojo.Brand;
import tk.mybatis.mapper.common.Mapper;
/**
* @Author: nullWagesException
* @Date: 2019/12/19 15:29
* @Description:
*/
public interface BrandMapper extends Mapper<Brand> {
}
创建包service和BrandService接口:
package com.changgou.goods.service;
import com.changgou.goods.pojo.Brand;
import java.util.List;
/**
* @Author: nullWagesException
* @Date: 2019/12/19 15:29
* @Description:
*/
public interface BrandService {
/***
* 查询所有品牌
* @return
*/
List<Brand> findAll();
}
在service包下创建impl包,包内创建BrandServiceImpl实现类,并实现BrandService接口(课件的代码并没有实现接口,所以直接照抄课件会出问题):
package com.changgou.goods.service.impl;
import com.changgou.goods.dao.BrandMapper;
import com.changgou.goods.pojo.Brand;
import com.changgou.goods.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author: nullWagesException
* @Date: 2019/12/19 15:30
* @Description:
*/
@Service
public class BrandServiceImpl implements BrandService {
@Autowired
private BrandMapper brandMapper;
/**
* 全部数据
* @return
*/
@Override
public List<Brand> findAll(){
return brandMapper.selectAll();
}
}
最后是创建controller包,并创建BrandController,代码如下:
package com.changgou.goods.controller;
import com.changgou.goods.pojo.Brand;
import com.changgou.goods.service.BrandService;
import entity.Result;
import entity.StatusCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author: nullWagesException
* @Date: 2019/12/19 15:30
* @Description:
*/
@RestController
@RequestMapping("/brand")
@CrossOrigin
public class BrandController {
@Autowired
private BrandService brandService;
/***
* 查询全部数据
* @return
*/
@GetMapping
public Result<Brand> findAll(){
List<Brand> brandList = brandService.findAll();
return new Result<Brand>(true, StatusCode.OK,"查询成功",brandList) ;
}
}
至此,我们启动eureka然后再启动goods模块
通过postman访问http://localhost:18081/brand,结果如下:
接下来是商品的CRUD,无论是分页查询还是条件查询都不难,这里不多累赘,需要代码的同学可以去我的GitHub直接copy代码,需要注意的一点是,课件里面的构建查询条件的代码有点问题,不过问题很简单,自己可以轻轻松松解决
其实我写这套博客的重点是记录过程中遇到的bug以及解决,所以常规的问题就不多记录了,大家如果写代码过程中遇到什么问题可以底下评论,有空会帮大家解决的。