【学习笔记】Spingboot快速入门(写javaWeb接口)

Spingboot快速入门(写javaWeb接口)

学习视频地址:BV16541147s1


此篇文章目的仅为“会用”,比如手机不需要明白底层也可以玩的很爽。

前提:
基本的java语法(基础)
基本的mysql语法(主要是数据库建表的时候用,到时候在xml文件操作数据库会写一点)
基本的mvc思想:MVC(Model-View-Controller)是一种软件架构模式,用于将应用程序分为

  1. Model(模型): 模型代表应用程序的数据和业务逻辑。它负责处理数据的存储、检索和更新,以及定义应用程序的核心功能。
  2. View(视图): 视图是用户界面的呈现部分,负责显示数据给用户。它通常是用户与应用程序交互的界面,如网页或应用程序的UI。
  3. Controller(控制器): 控制器充当模型和视图之间的桥梁。它接收用户的输入,处理用户请求并调用适当的模型来执行业务逻辑,然后更新视图以显示结果。

开发工具:IDEA + Navicat(数据库工具)
框架:SpringBoot + MyBatis

spring项目结构

在这里插入图片描述

(还有配置依赖在pom.xml里)

项目构建

项目构建时要勾选以下依赖(就算没勾后面也可以在pom.xml里面加):

  1. Spring Boot DevTools:这个依赖用于开发阶段,提供了一些实用工具和功能,如自动应用程序重启、热部署等,可以加速开发和测试过程。
  2. Spring Web:Spring Web是Spring框架的一部分,提供了用于构建Web应用程序的核心功能,包括控制器、请求映射、视图解析、拦截器等,使得开发Web应用程序更加容易和高效。
  3. JDBC API:JDBC(Java Database Connectivity)API是Java平台上用于与数据库进行交互的标准API。它允许Java应用程序连接到各种关系型数据库,并执行数据库操作。
  4. MySQL Driver:MySQL驱动程序是用于与MySQL数据库进行通信的Java驱动程序。它允许Java应用程序与MySQL数据库建立连接,发送SQL查询和更新命令,并获取结果。
  5. 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: 处理业务逻辑的(操作、计算等)

举例解释:

  1. Controller 包
    • 顾客来到前台,就像用户在网站上点击购买按钮。前台(控制器)的售货员接收到了顾客的请求,即购买一本《三国演义》的请求。
  2. Entity 包
    • 在后台,库存管理员会查看库存,确认是否有《三国演义》这本书。在代码中,Entity包中的实体类就像库存管理员的库存清单,它包含了所有书籍的信息,包括书名、作者、价格等。库存管理员检查清单,确认书籍的信息。
  3. Mapper 包
    • 如果库存清单中有《三国演义》,库存管理员需要从库存中取出这本书。在代码中,Mapper包中的类和接口就像库存管理员的工具箱,它们包含了访问数据库的方法。库存管理员会使用Mapper来查找并取出书籍的信息,就像从数据库中检索书籍的信息一样。
  4. Service 包
    • 当库存管理员找到了《三国演义》后,接下来是结算过程。结算台(Service包)负责计算书籍的总价,并完成购买流程。在代码中,Service类就像结算台,它会计算书籍的价格,确保订单的合法性,然后告诉库存管理员可以将书籍交给顾客了。

2.这些@注解都是什么意思?

答:新手理解:相当于new了一个对象。

  1. 注解用于声明组件
    • Spring Boot使用注解来声明和配置各种组件,例如控制器(@Controller)、服务(@Service)等。这些注解帮助Spring Boot识别哪些类应该被Spring容器管理,以及它们在应用程序中的角色。
  2. 依赖注入
    • @Autowired 注解用于自动装配(依赖注入)Spring Bean。它允许你在需要的地方引用其他组件,而不必手动创建实例或管理依赖关系。这简化了代码,降低了组件之间的耦合度。
  3. 请求映射
    • 控制器类通常使用 @RequestMapping 或其缩写形式 @GetMapping@PostMapping 等注解来定义URL路由和处理HTTP请求。这使得路由的定义更加清晰,并且可以直接与方法关联,简化了请求处理的配置。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值