如果不使用swagger和CorsConfig可以不建立config文件夹
<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.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.5.6version>
<relativePath/>
parent>
<groupId>com.schoolgroupId>
<artifactId>gaoxinartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>gaoxinname>
<description>Demo project for Spring Bootdescription>
<properties>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>com.google.guavagroupId>
<artifactId>guavaartifactId>
<version>20.0version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.2.0version>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
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/**
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;
}
}
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);
}
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);
}
}
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">
<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>
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" ,"更改成功");
}
}
到这里整个流程就走完了。下面都是一些配置以及响应类
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", "[email protected]");
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());
}
}
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;
}
}
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;
}
}