baozhengrui

导航

使用IDEA进行创建后台项目

1 项目的配置过程
第一步 进行配置项目
1 选择 file -> NEW -> project

2 在左侧选择 Spring Initializr 之后点击next

3 注意 此页面有可能加载时间特别长,加载完之后进到下一个页面

4 此时第一张图片问默认状态

里面需要进行更改的有,首先是Artifact 里面用来写项目的名称,Type类型改为 Maven Project(如果默认是这个,就不用改了),之后是 java Version ,我的是1.8 选择了 8,最后将更改项目名称的时候,最后Package里面的删掉

5 进入到下一个页面之后,选择左侧 web 然后选择第一个 Spring Web,之后在点击左侧的SQL,选择里面的MyBatis Framework 和 Mysql Driver,最后选择的对比第二张图最右侧那一栏,一共三个

6 项目名称 和路径

如果不进行更改项目路径,直接点击,如果进行修改,要在最后面加上 ’ / 项目名 ',之后点击完成就行

2 基本的包和类

在创建好项目之后,要等待一会,等着java包蓝色,就可以使用了。

在进行配置好之后,首先要做的,就是进行数据库连接的配置

其中需要主要的: 如果在项目配置的时候,没有进行勾选SQL里面的两项,需要在 pom.xml文件进行配置

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

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

默认的情况下,是存在的是 application.properties文件,需要创建一个application.yml,之后就是进行配置 application.yml文件

application.properties文件配置,一般不用,都将其注释起来

application.yml

在这个里面中,需要注意的是,里面的密码是自己的密码,不一定跟我的一样,然后就是url最后的bookborrow 是要使用的数据库名称
3 接下来就是逻辑的书写了
主要是分为三个包 po mapper controller 这几个包名字随意

1 po 文件夹中,里面主要是与数据库中相对于的数据,一些getter和setter方法。
以student为例

student数据库的图

然后po中的student类中写的是:

package com.test.po;

public class Student {
    private  int stuId;
    private String stuNo;
    private String name;
    private String password;
    private String phone;
    private String email;

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public String getStuNo() {
        return stuNo;
    }

    public void setStuNo(String stuNo) {
        this.stuNo = stuNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

2 在mapper 文件夹的StudentMapper,主要是进行设计方法和数据库语句的书写,里面主要实现的功能就是学生的增删改查

package com.test.mapper;


import com.test.po.Student;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;

@Mapper
public interface StudentMapper {

        //    获取学生列表
        @Select("select * from student")
        public ArrayList<Student> getStudentList();

        //    根据id查询某个学生
        @Select("select * from student where stuid = #{stuId}")
        public Student getStudentById(int stuId);

        //    增加

        @Insert("insert into student(stuno, name, password, phone, email) values(#{stuNo}, #{name}, #{password}, #{phone}, #{email})")
        public void insert(Student student);

        //    修改
        @Update("update student set stuno = #{stuNo}, name = #{name}, password = #{password}, phone = #{phone}, email = #{email} where stuid = #{stuId}")
        public void update(Student student);

        //    删除
        @Delete("delete from student where stuid = #{stuId}")
        public void delete(int stuId);
}

3 controller 文件夹下的StudentController ,用来进行具体数据的处理

package com.test.controller;


import com.test.mapper.StudentMapper;
import com.test.po.Student;
import com.test.vo.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;

@RestController
@RequestMapping("/student")
public class StudentController {

// @Autowired表示自动注入
    @Autowired
    private StudentMapper studentMapper;


//    查询学生列表   @RequestMapping("/list")此时表示的在查询的时候的url路径,应为在最上面已经声明了 student  所以总体来说应该是  http://localhost:8080/student/list
    @RequestMapping("/list")
    public PageInfo getStudentList(){
        ArrayList<Student> students= studentMapper.getStudentList();
        return new PageInfo<>(200,"操作成功",students);
    }

//    根据id进行查询
    @RequestMapping("/getById")
    public PageInfo getById(int stuId){
        Student student = studentMapper.getStudentById(stuId);
        return new PageInfo<>(200,"操作成功",student);
    }

    //    用户添加/增加功能 需要接收一个用户信息
    @RequestMapping("/save")
    public PageInfo save(Student student) {
//        此时msg里面已经有返回的数据 所以data里面面不用传递数据
        studentMapper.insert(student);
        return new PageInfo<>(200,"操作成功",null);
    }

    //    删除 根据id进行删除
    @RequestMapping("/delete")
    public PageInfo delete(int stuId) {
        studentMapper.delete(stuId);
        return new PageInfo<>(200,"操作成功",null);
    }

    //    更新/修改功能
    @RequestMapping("/update")
    public PageInfo update(Student student) {
        studentMapper.update(student);
        return new PageInfo<>(200,"操作成功",null);
    }
}

4 在vo文件夹下 主要是对数据返回,进行处理

package com.test.vo;

// 泛型T:就是把数据类型定义成一个变量,T能够接收各种类型 传来什么,T为什么类型
public class PageInfo<T>  {
    private int code;
    private String msg;
    private T data;

    public PageInfo() {
    }

    public PageInfo(int code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int 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;
    }

    @Override
    public String toString() {
        return "PageInfo{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

基本上后端的功能写完,然后在Test02Application 进行运行,

此时是正常启动页面

启动之后,在浏览器就可以进行对学生的操作,
例如 使用 http://localhost:8080/student/list 就可以在页面看见

最后,在进行配置之后,就可以在前端进行发送请求,返回数据给前端了。
不过,需要主要一个问题,就是在发送请求的时候,会发生 跨域的问题,解决方法

1 在后端的项目中,进行配置,在filter文件夹下建立一个过滤器
2 在 config文件夹下建立一个配置类
具体代码如下
config文件夹的Config类

package com.test.config;

import com.test.fillter.CorsFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

// 配置过滤器

@Configuration
public class Config {
    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilter() {
        // 创建一个过滤器注册器对象
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>();
        bean.setOrder(1);
        bean.setFilter(new CorsFilter());
        // 访问后台所有路径时,都需要过允许跨域访问的过滤器
        bean.setUrlPatterns(Arrays.asList("/*"));

        return bean;
    }
}

filter文件夹的CorsFilter类

package com.test.fillter;

import org.springframework.web.filter.OncePerRequestFilter;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//

public class CorsFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Max-Age", "3600000");
        response.setHeader("Access-Control-Allow-Header", "*");
        filterChain.doFilter(request, response);
    }
}

注意,进行后端的修改之后,要记得重新运行一下项目
————————————————
版权声明:本文为CSDN博主「qq_51357960」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_51357960/article/details/127634198

posted on 2023-09-07 17:08  芮艺  阅读(14)  评论(0编辑  收藏  举报