09,springboot整合elementui和mybatis_plus实现接口联调(完成后端接口)

1,环境准备

1.1,新建springboot工程

1.1.1,配置pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.study</groupId>
    <artifactId>springboot09_axios_element_vue</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot09_axios_element_vue</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.24</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

        <!--mybatis-spring-boot-starter-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
  <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

1.1.2,配置application.yml

# 公共配置
server:
  port: 8888 # 修改内嵌服务器端口号
  servlet:
    context-path: /spring-boot-day09

spring:
  mvc:
    static-path-pattern: /**
  web:
    resources:
      static-locations: classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/,classpath:/resources/static/
  # 数据源相关配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource # 指定连接池类型
    driver-class-name: com.mysql.jdbc.Driver # mysql 5.x版本驱动
    # driver-class-name: com.mysql.cj.jdbc.Driver # mysql 8.x版本驱动
    url: jdbc:mysql://localhost:3306/school?characterEncoding=UTF-8 # 指定url
    username: root # 指定用户名和密码
    password: Root-123 # 指定密码

logging:
  level:
    root: info # 指定根日志级别(一般不推荐修改根日志,输出信息太多,推荐使用子日志)
    com.study.dao: info #指定dao包中日输出级别

1.1.3,新建启动类SpringBootDay09Application

package com.study;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//入口类加入如下配置:
@SpringBootApplication

@MapperScan("com.study.mapper")
public class SpringBootDay09Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDay09Application.class, args);
    }
}

1.1.4,新建HelloController

package com.study.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hello")
public class HelloController {
    @GetMapping("get")
    public String get(){
        return "get hello success";
    }
}

1.1.5,测试

在这里插入图片描述

2,整合mybatis-plus

2.1,添加mybatis-plus相关的maven

 <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <!--<version>3.0.5</version>-->
            <version>3.5.1</version>
        </dependency>

        <!-- 代码自动生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>
        <!--逆向工程需要模板引擎-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

2.2,修改application.yml

# mybatis-plus相关配置
mybatis-plus:
  type-aliases-package: com.study.entity
  mapper-locations: classpath:**/*Mapper.xml

# mybatis相关配置
mybatis:
  type-aliases-package: com.study.entity
  mapper-locations: classpath:**/*Mapper.xml

2.3,完成代码生成工具类

package com.study.utils;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

public class MysqlCodeGenerator {

    private static final String URL = "jdbc:mysql://127.0.0.1:3306/school?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC";
    private static final String username = "root";
    private static final String password = "Root-123";
    private static final String author = "";
    public static void main(String[] args) {
        packMybatisPlus("tb_brand");
    }

    static void packMybatisPlus(String table) {
        FastAutoGenerator.create(new DataSourceConfig.Builder(URL, username, password)
                .dbQuery(new MySqlQuery())
                .typeConvert(new MySqlTypeConvert())
                .keyWordsHandler(new MySqlKeyWordsHandler()))
                .globalConfig(builder -> {
                    // 设置作者
                    builder.author("".equals(author) ? System.getProperty("user.name") : author)
                            // 使用java8新的时间类型
                            .dateType(DateType.TIME_PACK)
                            // 指定日期格式化方式
                            .commentDate("yyyy-MM-dd hh:mm:ss")
                            .outputDir("E:\\a_linailong\\myProject\\springboot_basics\\springboot09_axios_element_vue\\src\\main\\java");
                })
                .packageConfig(builder -> {
                    // TODO 设置父包名
                    builder.parent("com.study")
                            // 设置父包模块名
//                            .moduleName("system")
                            .entity("pojo")
                            .service("service")
                            .serviceImpl("service.impl")
                            .mapper("mapper")
                            .xml("mapper.xml")
                            .controller("controller");
                })
                .strategyConfig(builder -> {

                    builder
                            // 设置需要生成的表名 不设置表名则生成全部表
                            .addInclude(table)
                            // 开启跳过视图
                            .enableSkipView();

                    // 设置实体类策略
                    builder.entityBuilder()
                            // 开启链式模型
                            .enableChainModel()
                            // 开启lombok
//                            .enableLombok()
                            // 移除boolean的is前缀
                            .enableRemoveIsPrefix()
                            // 从数据库中生成字段注解
                            .enableTableFieldAnnotation()
                            // 命名规则下划线转驼峰
                            .naming(NamingStrategy.underline_to_camel)
                            // 数据库表字段映射到实体的命名策略
                            .columnNaming(NamingStrategy.underline_to_camel)
                            // 设置表字段自动填充
                            .addTableFills(new Column("create_time", FieldFill.INSERT))
                            .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE));

                    // mapper 生成策略
                    builder.mapperBuilder()
                            // 开启@Mapper注解
                            .enableMapperAnnotation();

                    // service 生成策略
                    builder.serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl");

                    // controller 生成策略
                    builder.controllerBuilder()
                            // 开启驼峰连字符
                            .enableHyphenStyle()
                            // 开始@RestController
                            .enableRestStyle();


                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

}

2.4,运行过后生成代码结构为

在这里插入图片描述

2.6 完成查询所以商品接口

2.6.1,封装返回体

2.6.1.1,完成ResultCode常量类
package com.study.common;

public class ResultCode {
    public static final Integer SUCCESS = 200;
    public static final Integer ERROR = 500;
    public static final int NOT_LOGIN = 600;
    public static final int NOT_AUTH = 700;
}

2.6.1.3,完成返回体 ResponseResult
package com.study.entity;


import com.study.common.ResultCode;
import lombok.Data;

import java.io.Serializable;


@Data
public class ResponseResult<T> implements Serializable {
    private Boolean success;//是否成功
    private Integer code;//状态码
    private String message;//返回消息
    private T data;

    public ResponseResult() {
    }

    public static <T> ResponseResult<T> ok(){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(true);
        responseResult.setCode(ResultCode.SUCCESS);
        responseResult.setMessage("执行成功");
        return responseResult;
    }

    public static <T> ResponseResult<T> ok(T data){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(true);
        responseResult.setCode(ResultCode.SUCCESS);
        responseResult.setMessage("执行成功");
        responseResult.setData(data);
        return responseResult;
    }

    public static <T> ResponseResult<T> error(Integer code){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(false);
        responseResult.setCode(code);
        responseResult.setMessage("执行失败");
        return responseResult;
    }
    public static <T> ResponseResult<T> error(){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(false);
        responseResult.setCode(ResultCode.ERROR);
        responseResult.setMessage("执行失败");
        return responseResult;
    }

    public ResponseResult<T> success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public ResponseResult<T> code (Integer code){
        this.setCode(code);
        return this;
    }

    public ResponseResult<T> message (String message){
        this.setMessage(message);
        return this;
    }

    public static<T> ResponseResult<T> exist (String message){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(true);
        responseResult.setCode(ResultCode.SUCCESS);
        responseResult.setMessage(message);
        responseResult.setSuccess(true);
        return responseResult;
    }

    public static<T> ResponseResult<T> exist (){
        ResponseResult<T> responseResult = new ResponseResult<T>();
        responseResult.setSuccess(true);
        responseResult.setCode(ResultCode.SUCCESS);
        responseResult.setSuccess(true);
        return responseResult;
    }
}

2.6.2,修改 TbBrandService接口

package com.study.service;

import com.study.entity.ResponseResult;
import com.study.pojo.TbBrand;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author admin
 * @since 2023-01-17 03:39:02
 */
public interface TbBrandService extends IService<TbBrand> {

    /**
     * 查询所以商品接口
     * @return
     */
    ResponseResult getAllTrand();
}

2.6.3,修改 TbBrandServiceImpl

package com.study.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.study.entity.ResponseResult;
import com.study.pojo.TbBrand;
import com.study.mapper.TbBrandMapper;
import com.study.service.TbBrandService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author admin
 * @since 2023-01-17 03:39:02
 */
@Service
public class TbBrandServiceImpl extends ServiceImpl<TbBrandMapper, TbBrand> implements TbBrandService {

    @Autowired
    TbBrandMapper tbBrandMapper;

    /**
     * 查询所以商品接口
     * @return
     */
    @Override
    public ResponseResult getAllTrand() {
        QueryWrapper<TbBrand> queryWrapper = new QueryWrapper<>();
        List<TbBrand> tbBrands = tbBrandMapper.selectList(queryWrapper);
        return ResponseResult.ok(tbBrands);
    }
}

2.6.4,修改 TbBrandController

package com.study.controller;


import com.study.entity.ResponseResult;
import com.study.service.TbBrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author admin
 * @since 2023-01-17 03:39:02
 */
@RestController
@RequestMapping("/brand")
public class TbBrandController {

    @Autowired
    TbBrandService tbBrandService;

    /**
     * 查询所以商品接口
     * @return
     */
    @GetMapping("/getAllTrand")
    public ResponseResult getAllTrand(){
        return tbBrandService.getAllTrand();
    }
}

2.6.5,测试

http://localhost:8888/spring-boot-day09/brand/getAllTrand
在这里插入图片描述

3,完成添加商品接口

3.1,修改 TbBrandService接口

/**
     * 添加商品
     * @param tbBrand
     * @return
     */
    ResponseResult addTrand(TbBrand tbBrand);

3.2,修改 TbBrandServiceImpl

 /**
     * 添加商品
     * @param tbBrand
     * @return
     */
    @Override
    public ResponseResult addTrand(TbBrand tbBrand) {
        int insert = tbBrandMapper.insert(tbBrand);
        if(insert != 0){
            return ResponseResult.ok("添加成功");
        } else {
            return ResponseResult.ok("添加失败");
        }

3.3,修改 TbBrandController

 /**
     * 添加商品
     * @param tbBrand
     * @return
     */
    @PostMapping("/addTrand")
    public ResponseResult addTrand(@RequestBody TbBrand tbBrand){
        return tbBrandService.addTrand(tbBrand);
    }

3.4,测试

http://localhost:8888/spring-boot-day09/brand/addTrand
在这里插入图片描述

4,完成根据id查询商品接口

4.1,修改 TbBrandService接口

/**
     * 根据id查询商品
     * @param id
     * @return
     */
    ResponseResult getBarnkInfoById(String id);

4.2,修改 TbBrandServiceImpl


    /**
     * 根据id查询商品
     * @param id
     * @return
     */
    @Override
    public ResponseResult getBarnkInfoById(String id) {
        TbBrand tbBrand = tbBrandMapper.selectById(id);
        return ResponseResult.ok(tbBrand);
    }

4.3,修改 TbBrandController

 /**
     * 根据id查询商品
     * @param id
     * @return
     */
    @GetMapping("/getBarnkInfoById/{id}")
    public ResponseResult getAllTrand(@PathVariable("id")String id){
        return tbBrandService.getBarnkInfoById(id);
    }

4.4,测试

http://localhost:8888/spring-boot-day09/brand/getBarnkInfoById/36
在这里插入图片描述

5,完成编辑商品接口

5.1,修改 TbBrandService 接口

  /**
     * 编辑商品
     * @param tbBrand
     * @return
     */
    ResponseResult updateTrand(TbBrand tbBrand);

5.2,修改 TbBrandServiceImpl

/**
     * 编辑商品
     * @param tbBrand
     * @return
     */
    @Override
    public ResponseResult updateTrand(TbBrand tbBrand) {
        int update = tbBrandMapper.updateById(tbBrand);
        if(update != 0){
            return ResponseResult.ok("编辑成功");
        } else {
            return ResponseResult.ok("编辑失败");
        }
    }

5.3,修改 TbBrandController

 /**
     * 编辑商品
     * @param tbBrand
     * @return
     */
    @PostMapping("/updateTrand")
    public ResponseResult updateTrand(@RequestBody TbBrand tbBrand){
        return tbBrandService.updateTrand(tbBrand);
    }

5.4,测试

在这里插入图片描述

6,完成删除商品接口

6.1,修改 TbBrandService

 /**
     * 删除商品
     * @param id
     * @return
     */
    ResponseResult deleteBarnkInfoById(String id);

6.2,修改 TbBrandServiceImpl

/**
     * 删除商品
     * @param id
     * @return
     */
    @Override
    public ResponseResult deleteBarnkInfoById(String id) {
        int deleteById = tbBrandMapper.deleteById(id);
        if(deleteById != 0){
            return ResponseResult.ok("删除成功");
        } else {
            return ResponseResult.ok("删除失败");
        }
    }

6.3,修改 TbBrandController

/**
     * 删除商品
     * @param id
     * @return
     */
    @GetMapping("/deleteBarnkInfoById/{id}")
    public ResponseResult deleteBarnkInfoById(@PathVariable("id")String id){
        return tbBrandService.deleteBarnkInfoById(id);
    }

6.4,测试

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值