spring boot restful光速无痛入门
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文件夹[将在此文件夹下完成业务],在文件夹下创建一个类,填写以下代码并导入相关类。
@RestController
public class Index {
@GetMapping("/")
public String index(){
return "恭喜你完成第一步";
}
}
- 启动项目,打开 localhost:8080/,你可以看到内容了~。
相关的目录结构:
-
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 等内容]
在以上两个连接中似乎没讲到如何返回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的配置文件中完成以下配置:
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
-
你需要有一个这样的表 ,其中id为主键自增且与age同为int,username为string类型。并且有一条记录的id为2.
-
在src/main/java/****下创建mapper文件夹,在文件夹下创建一个名为UserMapper,填写以下代码并导入相关类[ide是个好工具,要善于使用]。
@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这个按键可能挺有用的]。
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 +
'}';
}
}
-
在第一步你写代码的地方,这次你这样写
@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数据同时命令行也有输出。
-
项目目录结构
恭喜你完成第二课,接下来将讲述这中间发生了什么。
- mybatis是干啥的?
百科上这样说:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
其实就是为了简化操作数据库。(但是配置贼复杂,还不如不用,逃
如果你使用过jdbc,你会发现过程有些复杂和繁琐。
- 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不会编程 [啥也没有]
禁止转载!!!
- Author: DY
- Link: http://4fan.top/posts/spring-boot-restful%E5%85%89%E9%80%9F%E6%97%A0%E7%97%9B%E5%85%A5%E9%97%A8/
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.