SpringBoot开发(1)——准备

  1. 新建一个空工程
  2. 新建一个maven模块
  3. 在pom.xml中添加
    <parent>
       <artifactId>spring-boot-starter-parent</artifactId>
       <groupId>org.springframework.boot</groupId>
       <version>2.7.5</version>
    </parent>
  4. 在pom.xml中添加依赖
    <dependencies>
            <!--spring-boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--lombok依赖,实现数据get/set-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
            <!--mybatis依赖-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.2</version>
            </dependency>
    
            <!--mysql依赖-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    </dependencies>
  5. 在main\java中新建package:com.cxsbg
  6. 在resources中新建application.yml定义相关的配置
    #服务端口
    server:
      port: 80
    
    #mysql配置
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/db_test?characterEncoding=utf-8&serverTimezone=UTC
        username: root
        password:
        driver-class-name: com.mysql.cj.jdbc.Driver
    
    #mybatis配置
    mybatis:
      mapper-locations: classpath:mapper/*Mapper.xml  #mapper路径
      type-aliases-package: com.cxsbg.domain #bean路径
    
  7. 在cxsbg下新建启动类WebApplication
    package com.cxsbg;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class WebApplication {
        public static void main(String[] args) {
            SpringApplication.run(WebApplication.class,args);
        }
    }
  8. 在cxsbg下新建controller包,在controller包中新建controller类
    package com.cxsbg.controller;
    
    import com.cxsbg.domain.ResponseResult;
    import com.cxsbg.domain.User;
    import com.cxsbg.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController //controller注入
    @RequestMapping("/user") //路由地址
    //@CrossOrigin //支持跨域
    public class UserController {
        @Autowired //获得相应的service
        private UserService userService;
    
        @RequestMapping("/findAll")//路由地址
        //统一返回数据格式ResponseResult
        public ResponseResult findAll(){
            //调用相应的service函数,获得查询数据
            List<User> users = userService.findAll();
            //返回统一数据格式
            return new ResponseResult(200,users);
        }
    }
  9. 在cxsbg下新建domain包,在domain包下新建统一返回数据类ResponseResult和实体类(如User类)
    package com.cxsbg.domain;
    
    import com.fasterxml.jackson.annotation.JsonInclude;
    
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class ResponseResult <T>{
        //状态码
        private Integer code;
        //提示信息
        private String msg;
    
        //结果数据
        private T data;
    
        public ResponseResult(Integer code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        public ResponseResult(Integer code, T data) {
            this.code = code;
            this.data = data;
        }
    
        public ResponseResult(Integer code, String msg, T data) {
            this.code = code;
            this.msg = msg;
            this.data = data;
        }
    
        public Integer getCode() {
            return code;
        }
    
        public void setCode(Integer code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public T getData() {
            return data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    }
    
    package com.cxsbg.domain;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data //lombok实现get/set
    @NoArgsConstructor//lombok
    @AllArgsConstructor//lombok
    public class User {
        private Integer id;
        private String name;
        private Integer age;
    }
  10. 在cxsbg包下新建service包,在service包中新建对应的接口(如UserService),在service包下新建impl包来实现接口,在impl包下新建接口实现类(如UserServiceImpl)
    package com.cxsbg.service;
    
    import com.cxsbg.domain.User;
    
    import java.util.List;
    
    //定义一个接口类
    public interface UserService {
        List<User> findAll();//相应的函数接口
    }
    
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    //实现接口
    @Service //Service注入
    public class UserServiceImpl implements UserService {
    //用mapper操作数据库实现
    @Autowired //引入对应的mapper,实现底层数据库操作
    private UserMapper userMapper;
    
    @Override
    public List<User> findAll() {
    return userMapper.findAll();
    }
    }
  11. 在cxsbg包下新建mapper包来存放对应的mapper,在mapper包中建立接口,定义对应的接口函数
    package com.cxsbg.mapper;
    
    import com.cxsbg.domain.User;
    import org.apache.ibatis.annotations.Mapper;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    @Mapper //mapper注入
    @Repository //bean注入
    public interface UserMapper {
        List<User> findAll();
    }
  12. 根据配置文件中的路径,在resources下新建mapper包,在mapper包中新建对应的xml,实现mapper接口中的函数
    <?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.cxsbg.mapper.UserMapper">
        <select id="findAll" resultType="com.cxsbg.domain.User">
            select * from user
        </select>
    </mapper>
  13. 配置跨域,在cxsbg包下新建config包,在config包中新建CorsConfig类
    package com.cxsbg.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration //注入配置
    //实现WebMvcConfigurer接口
    public class CorsConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry){
            //设置允许跨域的路径
            registry.addMapping("/**")
                    //允许跨域请求的域名
                    //.allowedOrigins("*")
                    .allowedOriginPatterns("*")
                    //是否允许cookie
                    .allowCredentials(true)
                    //允许的请求方式
                    .allowedMethods("GET","POST","DELETE","PUT")
                    //允许的header属性
                    .allowedHeaders("*")
                    //跨域允许时间,第一次允许之后3600秒内都不会再次向服务器询问是否允许跨域
                    .maxAge(3600);
        }
    }
    
  14. 启动WebApplication

发表评论

邮箱地址不会被公开。 必填项已用*标注