Spingboot快速入门(写javaWeb接口)
学习视频地址:BV16541147s1
此篇文章目的仅为“会用”,比如手机不需要明白底层也可以玩的很爽。
前提:
基本的java语法(基础)
基本的mysql语法(主要是数据库建表的时候用,到时候在xml文件操作数据库会写一点)
基本的mvc思想:MVC(Model-View-Controller)是一种软件架构模式,用于将应用程序分为
- Model(模型): 模型代表应用程序的数据和业务逻辑。它负责处理数据的存储、检索和更新,以及定义应用程序的核心功能。
- View(视图): 视图是用户界面的呈现部分,负责显示数据给用户。它通常是用户与应用程序交互的界面,如网页或应用程序的UI。
- Controller(控制器): 控制器充当模型和视图之间的桥梁。它接收用户的输入,处理用户请求并调用适当的模型来执行业务逻辑,然后更新视图以显示结果。
开发工具:IDEA + Navicat(数据库工具)
框架:SpringBoot + MyBatis
spring项目结构
(还有配置依赖在pom.xml里)
项目构建
项目构建时要勾选以下依赖(就算没勾后面也可以在pom.xml里面加):
- Spring Boot DevTools:这个依赖用于开发阶段,提供了一些实用工具和功能,如自动应用程序重启、热部署等,可以加速开发和测试过程。
- Spring Web:Spring Web是Spring框架的一部分,提供了用于构建Web应用程序的核心功能,包括控制器、请求映射、视图解析、拦截器等,使得开发Web应用程序更加容易和高效。
- JDBC API:JDBC(Java Database Connectivity)API是Java平台上用于与数据库进行交互的标准API。它允许Java应用程序连接到各种关系型数据库,并执行数据库操作。
- MySQL Driver:MySQL驱动程序是用于与MySQL数据库进行通信的Java驱动程序。它允许Java应用程序与MySQL数据库建立连接,发送SQL查询和更新命令,并获取结果。
- Mybatis Framework:MyBatis是一个开源的Java持久化框架,用于简化数据库操作。它允许您通过XML或注解配置SQL映射,并提供了对象关系映射(ORM)的功能,使得数据库操作更加方便,同时也提供了一些高级特性,如缓存和动态SQL。
这些依赖通常用于开发基于Spring Boot的Web应用程序,其中Spring Web用于构建Web层,JDBC API和MySQL Driver用于与数据库交互,而MyBatis Framework用于简化数据库访问。Spring Boot DevTools可以提高开发效率,提供方便的开发工具。
开始搭建项目
1.application.properties后缀名改为yml
(区别:前者使用键值对,后者用缩进和结构化方式表示属性,后者更适合配置复杂或包含嵌套属性)
server:
port: 8888
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql:///demo
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
服务端口:8888 , mybatis:框架配置在mapper目录下的xml映射文件。数据库:这里的URL表示连接到一个名为"demo"的MySQL数据库,本地连接,使用默认的MySQL端口3306。数据库工具用Navicat(下载了MySQL之后可以参考视频BV1Ni4y1c7sG用Navicat连接),建表后生成了如下数据:
2.初次测试返回数据
controller包中创建UserController
@RestController
public class UserController {
@RequestMapping("/abc")
public Animal getName() {
return new Animal(12,"cat");
}
}
已经创建了实体类Animal,这里在/abc端口返回json数据:
3.Java调数据库
Spring boot简单步骤:
3.1.建立实体类,跟数据库表字段保持一致
entity包中创建User实体类,各个属性要和数据库表字段一致:
package com.example.entity;
public class User {
private int id;
private String name;
private int age;
private String email;
//然后就是alt+insert 创建函数、getter setter代码
}
3.2.建立mapper接口,定义要操作数据库的动作
@Mapper
public interface UserMapper {
List<User> findAll();
}
因为要数据库返回User对象,是一条条的数据,所以用List储存
3.3.建立mapper的xml文件,写具体的sql语句
在resources目录下创建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.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.entity.User">
SELECT*FROM user
</select>
</mapper>
- mapper指定了映射文件的命名空间(namespace)
id="findAll"
:这个查询操作的唯一标识符,通常在Java接口中使用这个ID来调用查询。resultType="com.example.entity.User"
:指定了查询结果的类型,这里是一个Java类的全限定名,表示查询结果将映射为该类的对象。SELECT * FROM user
:这是实际的SQL查询语句,表示从名为 “user” 的数据库表中选择所有列的数据。
整理:先在application.yml里面,声明mybatis框架配置在mapper目录下的xml映射文件;
再在UserMapper.xml里面,指定映射文件的命名空间、查询操作的唯一标识符findAll、查询对象的类型、SQL查询语句;
最后在UserMapper接口中定义了可以调用的 findAll()函数
3.4.建立service类,处理业务逻辑
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> findAll(){
return userMapper.findAll();
}
}
3.5.在controller类中展示处理的结果
@RestController
public class UserController {
@Autowired
private UserMapper userService;
@RequestMapping("/abcd")
public List<User> getUser() {
return userService.findAll();
}
}
成功访问数据库中的各项数据。
问题总结
1.分的controller、entity、mapper、service四个包分别有什么用?
答:controller: 做展示的,只给前端交互
entity: 只做数据库映射(数据库是什么我是什么)
mapper: 关联数据库,对数据库进行操作
service: 处理业务逻辑的(操作、计算等)
举例解释:
- Controller 包:
- 顾客来到前台,就像用户在网站上点击购买按钮。前台(控制器)的售货员接收到了顾客的请求,即购买一本《三国演义》的请求。
- Entity 包:
- 在后台,库存管理员会查看库存,确认是否有《三国演义》这本书。在代码中,Entity包中的实体类就像库存管理员的库存清单,它包含了所有书籍的信息,包括书名、作者、价格等。库存管理员检查清单,确认书籍的信息。
- Mapper 包:
- 如果库存清单中有《三国演义》,库存管理员需要从库存中取出这本书。在代码中,Mapper包中的类和接口就像库存管理员的工具箱,它们包含了访问数据库的方法。库存管理员会使用Mapper来查找并取出书籍的信息,就像从数据库中检索书籍的信息一样。
- Service 包:
- 当库存管理员找到了《三国演义》后,接下来是结算过程。结算台(Service包)负责计算书籍的总价,并完成购买流程。在代码中,Service类就像结算台,它会计算书籍的价格,确保订单的合法性,然后告诉库存管理员可以将书籍交给顾客了。
2.这些@注解都是什么意思?
答:新手理解:相当于new了一个对象。
- 注解用于声明组件:
- Spring Boot使用注解来声明和配置各种组件,例如控制器(
@Controller
)、服务(@Service
)等。这些注解帮助Spring Boot识别哪些类应该被Spring容器管理,以及它们在应用程序中的角色。
- Spring Boot使用注解来声明和配置各种组件,例如控制器(
- 依赖注入:
@Autowired
注解用于自动装配(依赖注入)Spring Bean。它允许你在需要的地方引用其他组件,而不必手动创建实例或管理依赖关系。这简化了代码,降低了组件之间的耦合度。
- 请求映射:
- 控制器类通常使用
@RequestMapping
或其缩写形式@GetMapping
、@PostMapping
等注解来定义URL路由和处理HTTP请求。这使得路由的定义更加清晰,并且可以直接与方法关联,简化了请求处理的配置。
- 控制器类通常使用