目录

springboot后端写接口入门

目录

springboot后端写接口(入门)

总结:

controller展示 定义接口路径和调用service

service  处理业务逻辑 数据库数据

mapper定义操作数据库动作,命名

mapper.xml执行mapper里定义的动作的sql语句,与数据库交互

entity 定义类,与数据库类型保持一致

第一步 new project

https://i-blog.csdnimg.cn/blog_migrate/42a6750e1342d24eba1a42ac93c5aa17.png

修改名字

https://i-blog.csdnimg.cn/blog_migrate/fe09636b144a65e93390ab8a777c3ead.png 安装相关依赖(装少了的话后期可以自己加,不过比较麻烦)

首先勾上这个工具,方便以后用

https://i-blog.csdnimg.cn/blog_migrate/3d0a3bbf1845154bfbb8068d25d1d8f9.png web

https://i-blog.csdnimg.cn/blog_migrate/4ddf77d640b08c94722f25c6e592eb11.png 用上数据库,勾上框的那三个

https://i-blog.csdnimg.cn/blog_migrate/89b2e46bb3ff51e7614f8303f1f316e9.png

命名

https://i-blog.csdnimg.cn/blog_migrate/1ed9d0ce65f252d3ca0f3522588ed6fa.png

第一次下载会有点慢(防火墙可能会阻止,需要允许访问)

(嫌弃慢的话搜索配一下阿里云的镜像,确实等了很久)

进来配置数据库信息

https://i-blog.csdnimg.cn/blog_migrate/30ff54c76eb83deb7a63caa4fbf3a934.png

yml配置

https://i-blog.csdnimg.cn/blog_migrate/b54aa8f17364b6e522559a762d39c35e.png 下面用户名密码数据库端口按照自己实际情况来(随便写的)

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
   
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.test.elasticsearchdemo.domain

再次运行,分配端口

https://i-blog.csdnimg.cn/blog_migrate/64f9e2ae1bdeed3725fafbbee8783d85.png

访问空白(因为啥也没写)

https://i-blog.csdnimg.cn/blog_migrate/2a0c64bbcaad542859fc46932b683b8b.png

建立controller包,建立类,返回一些数据(当然,现在是静态的)

https://i-blog.csdnimg.cn/blog_migrate/f5a25158066c0e6f244d571fd677d11f.png

https://i-blog.csdnimg.cn/blog_migrate/af381833de14fee45181996aca25d011.png

模拟返回json格式,建立Animal类,右键——生成——构造函数/get set

https://i-blog.csdnimg.cn/blog_migrate/cb1de44bed413dc476138434f958b9fd.png

设置返回这个json对象    return new Animal(“dog”,5); https://i-blog.csdnimg.cn/blog_migrate/9d34fac1e9977ae6d6c44d0e529b65d2.png

成功返回

https://i-blog.csdnimg.cn/blog_migrate/ea2c5fce0fc95170ee74e0290fe43bd1.png

前端测试接口,因为端口的不同还是出现了跨域问题

通过@CrossOrigin解决,因为方便,但是不是很好,还是单独配置一下过滤器比较好

https://i-blog.csdnimg.cn/blog_migrate/3753ead9065cbbc811a5eeb2f17598ca.png

https://i-blog.csdnimg.cn/blog_migrate/8f2fea3062d0fb31092b96459bcc2be1.png

下面当然是需要用到数据库的调用,真正实战都是调用数据库的嘛

https://i-blog.csdnimg.cn/blog_migrate/93f7dd532f83a0db93c81a7a1297e3a0.png

首先建立实体类(跟数据库保持一致)

entity

package com.test.demo.entity;

public class User {
    private int id;
    private String name;
    private String password;

    public User(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public int getId() {
        return id;
    }

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

    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;
    }
}

https://i-blog.csdnimg.cn/blog_migrate/3db662f32717fde06081a853b1ea912b.png

mapper 操作数据库动作

package com.test.demo.mapper;

import com.test.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
@Mapper
public interface UserMapper {
     // 定义操作数据库为查找所有用户
    List<User> findAll();
}

定义查找所有的数据

https://i-blog.csdnimg.cn/blog_migrate/b927fa7cfdf1949b3739dc15eaec39e8.png

建立mapper.xml(sql语句)

在resource文件下

<?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">
<!-- namespace对应哪个mapper文件 -->
<mapper namespace="com.test.demo.mapper.UserMapper">
<!--    id对应mapper里面的方法名 resultType对应实体类的数据库类-->
    <select id="findAll"  resultType="com.test.demo.entity.User">
       select * from user;
    </select>
</mapper>

https://i-blog.csdnimg.cn/blog_migrate/b327115960b9a96a4ffcc62782f91acb.png

service操作导出数据库数据

package com.test.demo.service;
import com.test.demo.entity.User;
import com.test.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public List<User> findAll(){
        return userMapper.findAll();
    }
}

https://i-blog.csdnimg.cn/blog_migrate/479eaca84c1520e6eccaf443a0dccfda.png

mapper里面加注解@mapper

https://i-blog.csdnimg.cn/blog_migrate/29159f92c32a8846090eb71217af6dd9.png

最后controller里面设置接口

package com.test.demo.controller;

import com.test.demo.entity.User;
import com.test.demo.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
public class userController {
    @Autowired
    private UserService userService;

    @CrossOrigin
    @RequestMapping("/abc")
    public Animal getName(){
        return new Animal("hml",5);
    }
    @CrossOrigin
    @RequestMapping("/abcd")
    public List<User> getUser(){
         return userService.findAll();
    }
}

效果:

https://i-blog.csdnimg.cn/blog_migrate/1cdccb87797d8f7ec8b595be1d942c16.png

开启谷歌插件json格式化

https://i-blog.csdnimg.cn/blog_migrate/1a4b96a44d3286d411f09cdf028f18ce.png

效果有:

https://i-blog.csdnimg.cn/blog_migrate/d2f8c74f107093b6f19ad455c4cac432.png

前后端分离测试调用成功

https://i-blog.csdnimg.cn/blog_migrate/3b372b229c77aa54dc9c9c1d95e8de6e.png