畅购03:完成对商品的CRUD

根据笔记,我们首先在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以及解决,所以常规的问题就不多记录了,大家如果写代码过程中遇到什么问题可以底下评论,有空会帮大家解决的。

发布了10 篇原创文章 · 获赞 4 · 访问量 1342

猜你喜欢

转载自blog.csdn.net/foxException/article/details/103608427