掘金日新计划 · 8 月更文挑战第16天--Spring Cloud模块子模块good-list业务开发

115 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

上一个小节,我们学习了spring-cloud-good-prictice的学习,我们学会了如何创建主模块(good-service)和两个子模块(good-list和good-price),今天我们来完成一下good-list业务逻辑的开发。老铁,跟着我,快上车~

1.首先,我们先看一下上一节课创建好的模块

image.png

2.我们在goods-list模块下的pom.xml文件引入对应的三大件(web依赖,mysql,mybatis)和一个插件

image.png

<dependencies>
<!--        1.引入web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        2.引入mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
<!--        3.引入mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>

引入插件

<!--    4.引入plugin插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

引入之后,记得导入对应的依赖 image.png 编辑spring-cloud-good-practice的pom.xml文件,修改一下Spring Boot的版本号,为了更好的匹配Sping Cloud image.png

3.配置一下good-list相关的数据库配置信息,端口号,日志

我们在good-list的Resource新增application.properties文件 image.png

#配置项目端口
server.port=8082
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/course_practice?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
#配置日志
logging.pattern.console=%clr(%d{${LOG_DATEFORMAT_PATTERN:HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}
#配置项目名称
spring.application.name=good-list

4.我们到good-list模块下配置熟悉的几个包,分别为controller,dao,entity,service和对应的java文件

image.png

  • 定义一下启动类,新建GoodsListApplication,并且编辑以下代码
@SpringBootApplication
public class GoodListApplication {
    public static void main(String[] args) {
        SpringApplication.run(GoodListApplication.class,args);
    }
}

image.png

  • 我们看一下good对应的表结构 image.png 具体数据如下 image.png
  • 在entity下创建Good文件,分别定义一下字段
package com.imooc.good.entity;

public class Good {
    Integer id;
    Integer goodId;
    String goodName;
    Integer valid;
}
  • 在service创建GoodService接口,并且定义getGoodList方法 image.png
public interface GoodListService {
    List<Good> getGoodList();
}
  • 在dao包下创建GoodMapper接口文件,并且提供findValidGood方法 image.png
@Mapper
@Repository
public interface GoodMapper {
    @Select("select * from good where valid=1")
    List<Good> findValidGood();
}

说明一下代码:
@Mapper表示是和查询相关注解
@Repository表示的是资源 @Select用于查询数据列表

  • 我们在service包下新建一个impl包,并且创建GoodListServiceImpl类,用于实现GoodsServie的方法 image.png
@Service
public class GoodListServiceImpl implements GoodListService {
    @Autowired
    GoodMapper goodMapper;
    @Override
    public List<Good> getGoodList() {
        return goodMapper.findValidGood();
    }
}

解释一下代码:
@Service表示该类是服务类 @Autowired表示注入指定的类,我们现在要注入GoodMapper,返回对应的资源

  • controller控制器新建GoodListController类文件,用来定义api接口 image.png
@RestController
public class GoodListController {
    @Autowired
    GoodListService goodListService;
    @GetMapping("/goods")
    public List<Good> goodList(){
        return goodListService.getGoodList();
    }
}

我们来整理一下思路:
首先通过controller去调用service提供的方法,这时候需要通过注解的@Autowired引入对应的GoodListService,然后调用getGoodList;
这时候来到了GoodListService,看一下未实现的的方法getGoodList;
接着我们来到GoodListServiceImpl,实现一下具体的方法getGoodList,首先引入GoodMapper,并且调用mapper定义的查询数据方法

5.我们启动一下项目

image.png 启动成功之后 image.png

6.我们尝试调用一下接口

http://localhost:8082/goods image.png 这时候提示 No serializer found for class com.imooc.good.entity.Good
我们就到entity类序列化一下并且重新启动一下项目 image.png 再次访问,还是报错,这时候我们我们在创建geter和setter方法 image.png 再次访问api接口地址: image.png 我们发现goodId和GoodName变量值没有返回回来,这时候我们再去配置一下application.properties,开启驼峰配置

mybatis.configuration.map-underscore-to-camel-case=true

再次访问: image.png