SpringBoot学习笔记

总体思路:先写dao,再写service

1.https://start.spring.io

生成对应的模板

2.写TestCotroller类,类上写@RestCotroller注解

3.TestCotroller类里写方法,方法上写@GetMapping("/方法名")注解

4.不一定要写GetMapping,具体看做什么操作

5.服务跑起来,试试效果

6.安装MySQL数据库,网上很多资料,可以参考https://www.cnblogs.com/zhangkanghui/p/9613844.html

7.建立测试库

CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

8.建表

CREATE TABLE student( id int AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,age int );

9.返回IDEA,写dao层,dao层都是接口,负责与数据库的交互。加上注解@Restpository

注解作用:告诉SpringBoot框架,这是Repository层的代码。底层原理是依赖注入,将代码加入容器中,让框架能扫描到。

实现要继承JpaRepository,因为父类JpaRepository几乎包含了对数据库的增删查改。

10.在dao层中建一个student类,这个类用来映射数据库中的student表。

注解:

@Entity

@Table(name="student")

告诉SpringBoot框架这个类用来映射数据库中的student表。

注解:

@Id,告诉SpringBoot框架,它是一个自增的主键。

@Colum(name="age"),写在字段头上,告诉SpringBoot框架,java中的字段对应数据库中哪个字段。如果相同可以不写。

@GeneratedValue(strategy="IDENTITY"),写在字段头,告诉SpringBoot框架,id字段是数据库自增的字段。

如果不知道注解的参数,可以按住crtl键,鼠标左键进去看。

10.返回去写StudentRepository接口,给父类的泛类型添上值。

11.开始写service层

面向接口编程,先写接口,再写实现。

注解:@Service在实现层,让SpringBoot框架来注入。

@Override:告诉SpringBoot的框架,这个方法是实现接口的。(自动带出)

声明StudentRepository接口,使用@AutoWired注入

@Autowired:告诉SpringBoot框架,StudentRepository接口被注入到实现类中。

12.开始写Controller层的代码。

注入@RestController,告诉SpringBoot框架这个是Controller层。

因为是查询,所以再注入@GetMapping。

@PathVariable:对应路径变量。

@Autowired代表:注入Service层的代码

总结,可以看到,咱们先写了dao层,然后写service层的时候,使用了这个注解@Autowired,这是把dao层的代码注入进Service层,然后Controller层也写了这个注解@Autowired,这就是Service层的代码又注入到Controller层。

13.配置数据库url

14.手工插数据进mysql数据库

15.启动项目,网页输出json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/346014.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL从入门到高级 --- 15.优化 16.pymysql

文章目录 第十五章 && 第十六章:15.优化15.1 查询SQL执行效率15.2 定位低效率执行SQL15.3 explain分析执行计划 - 基本使用15.4 explain分析执行计划 - id15.5 explain分析执行计划 - select_type15.6 explain分析执行计划 - type15.7 explain分析执行计划 …

MySQL高性能(MySQL锁)

MySQL性能系列 MySQL锁 前言1. 死锁机制2. 思维导图与锁划分介绍3. 粒度划分锁3.1. 全局锁3.2. 页级锁(Page-level locking)3.3. 表级锁(Tables-level lock)○ 共享锁(表级)○ 排他锁(表级&…

字节面试:CPU100% 如何处理?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的线上问题的场景题: 1.CPU100%,你是怎么处理的&…

jvm学习笔记(二) ----- 垃圾回收

GC 一、判定对象是否是垃圾1.引用计数法2.可达性分析算法 二、垃圾回收算法1.标记清除2.标记整理3. 复制4. 分代垃圾回收1.尝试在伊甸园分配2.大对象直接晋升至老年代3.多次存活的对象4.老年代连续空间不足,触发 Full GC 链接: jvm学习笔记(一) ----- JAVA 内存 链接…

C++程序设计:对数据文件的操作与文件流

姚老师小课堂开课啦! 一、文件的分类: 1.ASCII码文件: ASCII文件使用方便,比较直观,便于阅读,便于对字符进行输入输出,但一般占用存储空间较多,而且需要花费转换时间(二…

④-2单细胞学习-cellchat单数据代码补充版(通讯网络)

目录 通讯网络系统分析 ①社会网络分析 1,计算每个细胞群的网络中心性指标 2,识别细胞的信号流模式 ②非负矩阵分解(NMF)识别细胞的通讯模式 1,信号输出细胞的模式识别 2,信号输入细胞的模式识别 信…

激光点云配准算法——Cofinet / GeoTransforme / MAC

激光点云配准算法——Cofinet / GeoTransformer / MAC GeoTransformer MAC是当前最SOTA的点云匹配算法,在之前我用总结过视觉特征匹配的相关算法 视觉SLAM总结——SuperPoint / SuperGlue 本篇博客对Cofinet、GeoTransformer、MAC三篇论文进行简单总结 1. Cofine…

计算机网络 期末复习(谢希仁版本)第8章

元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。 10. 流式:TCP;流式实况:UDP。

10秒钟docker 安装Acunetix

1、拉取镜像: 2、查看镜像: [rootdns-server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/hiepnv/acunetix latest f8415551b8f4 2 months ago 1.98GB 3、运行镜像: …

Redis 单线程问题 BigKey问题

前言 简单的redis基础类型以及常用操作我们都也已经介绍过了 现在今天我们来谈谈redis对于单线程是需要怎么理解的 以及redis假设遇见大key我们需要怎么去查询和删除呢??? redis单线程 假设有个人现在问你一个问题:redis是单线程的还是多线程的 这个问题本身就不严谨 就像问…

Python通过数据验证功能在Excel文件中创建下拉列表

Excel表格的灵活性和功能性深受各行各业人士的喜爱。在Excel表格中,下拉列表功能是提升数据录入效率与准确性的一个重要利器,能够为用户提供预设的选择项,限制输入范围,避免手动输入错误,还能够简化数据录入过程&#…

深度学习(三)

5.Functional API 搭建神经网络模型 5.1利用Functional API编写宽深神经网络模型进行手写数字识别 import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom…

Nginx配置详细解释:(3)http模块及server模块,location模块

目录 环境概述: http模块中的全局模块 1. root配置主要是对主web页面的路径访问。 2.server虚拟主机 2.1基于IP: 2.2基于域名: 3.alias别名 4.location匹配 5.access模块: 6.验证模块 7.自定义错误页面 8.日志存放位置…

Clearedge3d EdgeWise 5.8 强大的自动化建模软件

EdgeWise是功能强大的建模软件,提供领先的建模功能和先进的技术,让您的整个过程更快更准确!您可以获得使用自动特征提取和对象识别的 3D 建模,ClearEdge3D 自动建模和对象识别软件通过创建竣工文档和施工验证完成该过程。拓普康和…

Python第二语言(七、Python模块)

目录 1. 什么是模块 2. 基本语法 2.1 模块的导入方式 2.2 基本语法 import 模块名 2.3 基本语法 from 模块名 import 功能名 2.4 基本语法as 别名 3. 自定义模块 4. 调用自定义模块时,如何让其模块中的函数不被调用(__name__) 5. 调…

【数据结构与算法】使用数组实现栈:原理、步骤与应用

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 🎄栈(Stack)是什么? &#x1…

安卓逆向经典案例——XX牛

安卓逆向经典案例——XX牛 按钮绑定方式 1.抓包 2.查看界面元素,找到控件id 通过抓包,发现点击登录后,才会出现Encrpt加密信息,所以我们通过控件找到对应id:btn_login 按钮绑定方法——第四种 public class LoginA…

开源规则引擎LiteFlow项目应用实践

本文介绍基于开源规则引擎LiteFlow,如何开发规则设计器,在低代码平台中集成规则引擎,并在项目中实现应用的效果。由于低代码平台使用规则引擎实现了逻辑编排的需求,所以本文中的叫法为“逻辑设计”、“逻辑编排”、“逻辑流引擎”…

【Android面试八股文】一图展示 Android生命周期:从Activity到Fragment,以及完整的Android Fragment生命周期

图片来源于:https://github.com/xxv/android-lifecycle Android生命周期:从Activity到Fragment 图:android-lifecycle-activity-to-fragments.png 完整的Android Fragment生命周期 图:complete_android_fragment_lifecycle.png…

设置路径别名

一、描述 如果想要给路径设置为别名,就是常见的有些项目前面的引入文件通过开头的,也就是替换了一些固定的文件路径,怎么配置。 二、配置 import { defineConfig } from vite import react from vitejs/plugin-react import path from path…