spring boot + MyBatis3 +MySql建立增删改查接口

1、建立如下项目结构

在这里插入图片描述
如果不使用swagger和CorsConfig可以不建立config文件夹

2、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 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>
<!--        2.6.0可能swagger报错-->
        <version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.school</groupId>
    <artifactId>gaoxin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gaoxin</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

<!--        swagger部分下面三个-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

<!--        不加这个就报Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException-->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</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>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
    </dependencies>

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

</project>

3、配置yml

server:
  port: 9580
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
                                  //test改为你的数据库名
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root  //数据库名称
    password: root  //密码
  web:
    resources:
      static-locations: file:E:\springboot\test\src\main\resources\images
  thymeleaf:
    cache: false


mybatis:
  mapper-locations: classpath:mapper/*.xml


spring.mvc.static-path-pattern: /images/**

4、建立实体类

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
//使用Api需要swaager
@ApiModel("Boss直聘实体类")
public class Boss {
    @ApiModelProperty("ID")
    private int Id;
    @ApiModelProperty("职位名称")
    private String work_name;
    @ApiModelProperty("职位工资")
    private String work_money;
    @ApiModelProperty("工作地址")
    private String work_address;
    @ApiModelProperty("工作经验")
    private String work_year;
    @ApiModelProperty("学历要求")
    private String work_study;
    @ApiModelProperty("任职公司")
    private String work_company;
    @ApiModelProperty("职位内容")
    private String work_type;
    @ApiModelProperty("公司现状")
    private String work_solar;


    public int getId() {
        return Id;
    }

    public void setId(int id) {
        this.Id = id;
    }

    public String getWork_name() {
        return work_name;
    }

    public void setWork_name(String work_name) {
        this.work_name = work_name;
    }

    public String getWork_money() {
        return work_money;
    }

    public void setWork_money(String work_money) {
        this.work_money = work_money;
    }

    public String getWork_address() {
        return work_address;
    }

    public void setWork_address(String work_address) {
        this.work_address = work_address;
    }

    public String getWork_year() {
        return work_year;
    }

    public void setWork_year(String work_year) {
        this.work_year = work_year;
    }

    public String getWork_study() {
        return work_study;
    }

    public void setWork_study(String work_study) {
        this.work_study = work_study;
    }

    public String getWork_company() {
        return work_company;
    }

    public void setWork_company(String work_company) {
        this.work_company = work_company;
    }

    public String getWork_type() {
        return work_type;
    }

    public void setWork_type(String work_type) {
        this.work_type = work_type;
    }

    public String getWork_solar() {
        return work_solar;
    }

    public void setWork_solar(String work_solar) {
        this.work_solar = work_solar;
    }

    public Boss(int id, String work_name, String work_money, String work_address, String work_year, String work_study, String work_company, String work_type, String work_solar) {
        Id = id;
        this.work_name = work_name;
        this.work_money = work_money;
        this.work_address = work_address;
        this.work_year = work_year;
        this.work_study = work_study;
        this.work_company = work_company;
        this.work_type = work_type;
        this.work_solar = work_solar;
    }
}

5、建立Mapper接口


import com.school.gaoxin.entity.Boss;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface BossMapping {

       /*
       查找所有Boss数据
        */
       List<Boss> findAll();


       /*
       通过ID查找boss的数据
        */
       Boss SearchBossByID(Integer Id);

       /*
        增加用户
        */

       void save(Boss boss);

       /*
        * 根据id删除用户
        */
       void delete(Integer Id);


       /*
        * 更改用户信息
        */
       void update(Boss boss);
}

6、建立Service

import com.school.gaoxin.Mapper.BossMapping;
import com.school.gaoxin.entity.Boss;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BossServer {


    @Autowired
    private BossMapping bossMapping;

    public List<Boss> findAll(){
        return bossMapping.findAll();
    }

    public Boss SearchBossByID(Integer Id){ return bossMapping.SearchBossByID(Id);}

    /*
    增加Boss数据
     */

    public void save(Boss boss){
        bossMapping.save(boss);
    }

    /*
     * 根据id删除用户
     */
    public void delete(Integer Id){
         bossMapping.delete(Id);
    }

    /*
     * 更改用户信息
     */
    public void update(Boss boss){
         bossMapping.update(boss);
    }
}

7、建立Mybatis的.xml文件

<?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.school.gaoxin.Mapper.BossMapping">

<!--    查询所有Boss信息-->
    <select id="findAll" resultType="com.school.gaoxin.entity.Boss">
        SELECT * FROM boss
    </select>
<!--        查找信息-->
    <select id="SearchBossByID" resultType="com.school.gaoxin.entity.Boss">
        SELECT * FROM boss where Id = #{Id}
    </select>
<!--     添加信息-->
    <select id="save" resultType="com.school.gaoxin.entity.Boss">
        INSERT INTO boss(work_name, work_money, work_address, work_year, work_study, work_company, work_type, work_solar) values (#{work_name}, #{work_money}, #{work_address}, #{work_year}, #{work_study}, #{work_company}, #{work_type}, #{work_solar})
    </select>
<!--     删除用户-->
    <select id="delete" resultType="com.school.gaoxin.entity.Boss">
        delete from boss where Id = #{Id}
    </select>
<!--     更改信息-->
    <select id="update" resultType="com.school.gaoxin.entity.Boss">
        update boss set work_name=#{work_name},work_money=#{work_money}, work_address=#{work_address}, work_year=#{work_year}, work_study=#{work_study} , work_company=#{work_company}, work_type=#{work_type}, work_solar=#{work_solar} where id=#{id}
    </select>
</mapper>

8、建立控制类


import com.school.gaoxin.Service.BossServer;
import com.school.gaoxin.entity.Boss;
import com.school.gaoxin.utils.CommonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Api(tags = "Boss直聘类")
@RestController
@CrossOrigin   //解决跨域问题
public class BossController {


    @Autowired
    private BossServer bossService;

    @ApiOperation("获取Boss数据")
    @GetMapping("/boss")
    public CommonResponse findAll(){
        return CommonResponse.ok().data("items" ,bossService.findAll());
    }


    @ApiOperation("使用ID获取Boss数据")
    @PostMapping("/bossByID/{id}")
    public CommonResponse SearchBossByID(@PathVariable Integer id){
            System.out.println(id);
            return CommonResponse.ok().data("items" ,bossService.SearchBossByID(id));
    }

    @ApiOperation("插入Boss数据")
    @PostMapping("/insert")
    public CommonResponse save(Boss boss){
        System.out.println(boss);
        bossService.save(boss);
        return CommonResponse.ok().data("items" ,"插入成功");
    }

    @ApiOperation("删除Boss数据")
    @PostMapping("/delete/{id}")
    public CommonResponse delete(@PathVariable Integer id){
        System.out.println(id);
        bossService.delete(id);
        return CommonResponse.ok().data("items" ,"删除成功");
    }


    @ApiOperation("更新Boss数据")
    @PostMapping("/update")
    public CommonResponse update(Boss boss){

        bossService.update(boss);
        return CommonResponse.ok().data("items" ,"更改成功");
    }





}

进入swagger调试代码
在这里插入图片描述

获取所有数据

在这里插入图片描述

通过Id获取信息

在这里插入图片描述
剩下的我就不演示了

到这里整个流程就走完了。下面都是一些配置以及响应类

swagger配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

@Configuration
@EnableSwagger2
public class SwaggerConfig {


    //配置了Swagger的Docket的Bean实例
     @Bean
     public Docket docket(){
         return new Docket(DocumentationType.SWAGGER_2)
                 .apiInfo(apiInfo())
                 .groupName("又菜又爱玩")
                 .select()
                 //RequestHandlerSelectors配置要扫描的接口的方式
                 //basePackage指定扫描的包
                 .apis(RequestHandlerSelectors.basePackage("com.school.gaoxin"))
                 //过滤路径
                 //.paths(PathSelectors.any(""))
                 .build();  //build
     }

     //配置Swagger 信息 = apiInfo
     private ApiInfo apiInfo(){

         //作者信息
         Contact Contact = new Contact("李卓轩", "https://blog.csdn.net/biancheng4?spm=1000.2115.3001.5343", "1605724068@qq.com");
         return  new ApiInfo("高薪一站通",
                 "信息工程学院105工作室",
                 "1.0", "https://blog.csdn.net/biancheng4?spm=1000.2115.3001.5343",
                 Contact, "Apache 2.0",
                 "http://www.apache.org/licenses/LICENSE-2.0",
                 new ArrayList());
     }




}

Cors配置类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

/**
 * 解决跨域问题
 */
@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations(
                "classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }




    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");

    }
}

响应数据类

import java.util.HashMap;
import java.util.Map;

public class CommonResponse{
    private Boolean success;
    private ResultCode code;
    private String message;
    private Map<String, Object> data = new HashMap<String, Object>();

    private CommonResponse(){}

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

    public ResultCode getCode() {
        return code;
    }

    public void setCode(ResultCode code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Map<String, Object> getData() {
        return data;
    }

    public void setData(Map<String, Object> data) {
        this.data = data;
    }

    public static CommonResponse ok(){
        CommonResponse commonResponse = new CommonResponse();
        commonResponse.setSuccess(true);
        commonResponse.setCode(ResultCode.SUCCESS);
        commonResponse.setMessage("成功");
        return commonResponse;
    }

    public static CommonResponse error(){
        CommonResponse commonResponse = new CommonResponse();
        commonResponse.setSuccess(false);
        commonResponse.setCode(ResultCode.FAIL);
        commonResponse.setMessage("失败");
        return commonResponse;
    }

    public CommonResponse success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public CommonResponse message(String message){
        this.setMessage(message);
        return this;
    }

    public CommonResponse code(ResultCode code){
        this.setCode(code);
        return this;
    }

    public CommonResponse data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public CommonResponse data(Map<String, Object> map){
        this.setData(map);
        return this;
    }

}

响应库ResultCode


package com.school.gaoxin.utils;

public enum ResultCode {
    

    SUCCESS(200,"操作成功"),
    FAIL(201,"操作失败"),
   

    ;

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 状态码
     */
    private final Integer code;
    /**
     * 返回消息文本
     */
    private final String message;

    ResultCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code(){
        return this.code;
    }
    public String message(){
        return this.message;
    }



}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值