spring boot restful光速无痛入门

hello world

我将让你以最快的速度先看到内容,请一步一步跟着做,然后将讲解内容。

  • 创建项目:通过spring initialz创建。

  • 打开网站,按照以下选择

Version:任意,推荐无任何备注的

Project:Maven Project
Language:Java
packaging:Jar
Java:推荐8

  • 在右侧选择依赖:加入Spring Web

  • 在下侧选择generate下载生成的项目文件并解压。

  • 使用idea,载入项目。等待maven完成依赖和目录初始化。

  • 创建路由类:

    • 在src/main/java/****下创建controller文件夹[将在此文件夹下完成业务],在文件夹下创建一个类,填写以下代码并导入相关类。
1
2
3
4
5
6
7
@RestController
public class Index {
@GetMapping("/")
public String index(){
return "恭喜你完成第一步";
}
}
  • 启动项目,打开 localhost:8080/,你可以看到内容了~。

相关的目录结构:

image-20200708211130087

  • spring系列框架的理解

    spring: 百科中有如下解释“ 针对bean的生命周期进行管理的轻量级容器 , 提供了功能强大IOC、AOP及Web MVC等功能 ” 。

    我的理解[估计不对,不敢信的]:连接池 + xml ==>解耦,高效。

    spring boot: 耦合性是降低了,但是xml中的各种配置参数让人懵B,属实劝退。spring boot就是为了解决这种问题,即通过提供各种功能的默认参数尽可能的减少配置以便快速跑起来。[spring boot启动时会优先使用自定义的配置,如果没有就使用默认的]

    spring boot的starter: 将其原本的功能封装好并加入默认配置的jar包。

  • 版本的问题?

    在上边我们创建项目时可以选择spring boot的版本,那么各种版本的区别是什么呢?版本介绍:

你可以在这里看到spring boot的各种版本,以下是各个版本的含义:

​ GA :稳定版本

​ CURRENT: 最新不一定稳定

​ SHAPSHOT:开发版

  • 配置文件

    你可以通过写入位于spring boot项目的resource目录下的配置文件,完成端口修改,数据源配置等等功能,具体请自行百度。

  • 使用spring boot完成其它请求方法?参考以下连接[在阅读以下连接前你可能需要了解 web路由,web请求方法,json 等内容]

    • http://m.hangge.com/news/cache/detail_2484.html

    • http://m.hangge.com/news/cache/detail_2485.html

      在以上两个连接中似乎没讲到如何返回json这个常用的功能,spring boot 的 reference中提到,你可以直接在路由的处理函数[eg:上图的hello函数]中返回一个Object,spring boot将自动返回json数据。如果你想完成json嵌套呢?对象内置对象可能是一种思路[也有其它思路]。一般的开发中通常会返回类似 {“code”:”200”,”msg”:”ok”,…..}的内容,因此通过对象的嵌套可能是一种好的方式.关于 json 的其它内容,你也可以自行查询。

      此教程希望完成指引功能,因此如果你想完成其它功能(例如静态文件服务器等),请自行查询。

在spring boot中使用mybatis

和之前相同,请先一步一步的按照教程完成操作,我将在后边为你讲解。

  • 在第一步创建项目时,继续添加 MySQL Driver,MyBatis Framework依赖。

  • 配置数据库

    在spring boot的配置文件中完成以下配置:

    1
    2
    3
    4
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://ip:port/databaseName?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username=username
    spring.datasource.password=passwd
  • 你需要有一个这样的表image-20200708215131454,其中id为主键自增且与age同为int,username为string类型。并且有一条记录的id为2.

  • 在src/main/java/****下创建mapper文件夹,在文件夹下创建一个名为UserMapper,填写以下代码并导入相关类[ide是个好工具,要善于使用]。

    1
    2
    3
    4
    5
    @Mapper
    public interface UserMapper {
    @Select("select * from users where id = #{id}")
    User findById(@Param("id") int id);
    }
  • 在src/main/java/****下创建bean文件夹,在文件夹下创建一个名为User的类,填写以下代码并导入相关类[idea中 alt + insert这个按键可能挺有用的]。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class User {
private int id;
private String username;
private int age;

public int getId() {
return id;
}

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

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
'}';
}
}
  • 在第一步你写代码的地方,这次你这样写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @RestController
    public class Index {
    @Autowired
    private UserMapper m;
    @GetMapping("/")
    public User index(){
    User d = m.findById(2);
    System.out.println(d);
    return d;
    }
    }
  • 启动项目,访问 localhost:8080 你将看到一个json数据同时命令行也有输出。

  • 项目目录结构

    image-20200708220914529

恭喜你完成第二课,接下来将讲述这中间发生了什么。

  1. mybatis是干啥的?

百科上这样说:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

其实就是为了简化操作数据库。(但是配置贼复杂,还不如不用,逃

如果你使用过jdbc,你会发现过程有些复杂和繁琐。

  1. mybatis怎样工作呢?

    对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

    emmm,其实就是将数据库中的表和一个类的属性对应,来简化操作。

    观察上图中的实体类你会发现ta和数据库中的那张让你准备好的表是对应的。

    你通过执行mapper中接口的方法即完成了数据库的查询。== 等等,不对啊,java中的接口不是只是一个标准没有实现🐎? 确实是这样的,在传统的 SSM 框架中[局部],你可能会看到类似如下的目录

    如下

    ,在mapper下还要一个impl文件夹,在impl文件夹下有一个类,这个类中来实现UserMapper接口。而通过mybatis-starter的方式,你只需要使用注解的方式完成接口即可,starter会为你自动实现相关方法。(事实上使用注解这种方式并不是只有spring boot中可以使用,在mybatis3.4版本后就已支持注解和XML两种方式。)

    当你调用接口的方法完成crud的操作时,框架将自动为你完成对象与表的关联,这样你操作的单位将是与表对应的对象[序列化和反序列化这两个词可能有利于你的理解,请自行搜索],便简化了操作。

    实体类可以通过一些工具自动生成。

恭喜你完成Spring boot restful的光速无痛教学。如果你还要任何问题,可以自行使用搜索引擎或者参考官方的文档。

Tips:文中的理解真可能不对,毕竟我刚学java 1天。这篇文章主要是给自己翻阅,避免下次过不去坑。如果你想和我交流,好像也没途径,我这垃圾博客不支持评论。注意代码里边的注解,丢了就跑不起来了。还有不理解的概念请自行搜索,我已经尽可能通俗的描述了。

终于写完了,这两天废了很多时间终于跑起来了,当o98k的时候,眼泪扑哧一下就到屏幕上了,太感人了😭~~

Auther:DY

GitHub: https://github.com/lonely-root-number2

B站:DY不会编程 [啥也没有]

禁止转载!!!