SpringBoot学习(一)

一、SpringBoot的优点:

1.快速构建一个独立的 Spring 应用程序,简化开发的Web应用。

2.嵌入的 Tomcat、Jetty 或者 Undertow,无须部署 WAR文件,内嵌了web服务器(前三个都是web服务器),不用war包,放到对应的服务器中,只需要一个jar包就行,通过java来启动就行。

3.提供starter POMs来简化Maven配置和减少版本冲突所带来的问题,相当于是依赖,简化了很多的依赖,并且还帮助我们管理了很多的版本号,减少冲突。

4.对Spring和第三方库提供默认配置(约定大于配置),也可修改默认值,简化框架配置。

5.无需配置XML--JavaConfig,无代码生成,开箱即用,通过存注解的方式来解决。

二、项目的结构解释

前端各种的设计代码之类的

     ↑        ↓

控制层:@RestController  @Controller  

用来给前端提供接口的相关操作方式

     ↑        ↓

业务层:@Service

用来写主要的逻辑,各种各样的逻辑代码

     ↑        ↓

数据访问层:@Repository

顾名思义,和MySQL进行交互操作,用来拿数据的相关操作,通过SpringDataJPA方式来实现。

     ↑        ↓

MyAQL数据库

三、前置的知识要求

1.熟练使用Maven进行项目构建和依赖管理

2.熟练使用idea

3.SpringBoot 3.1.5需要Java17,还需要Spring Framework 6.x版本

四、SpringBoot项目的一个大体的代码文件结构

src

   main

      java:书写运行时的java代码文件

         controller:控制层的文件

         service:服务层

         repository:数据访问层

         pojo 类 里面放置要生成的数据文件

         xxxApplocation.java:SpringBoot项目的入口类文件(有且只有一个)

      resources:书写运行时使用的配置文件

         application.yml   application.properties核心配置文件,必须在根目录中

   test

      java:书写测试时的java代码文件

      resources:书写测试时使用配置文件

五、配置文件中的各种解释说明

sercer.port=8080    当web应用端口,默认是8080

spring.datasource.url=xxxxxxxx    数据库的地址

spring.datasource.username=root   用户名

spring.datasource.password=123456   密码

spring.datasource.driver-class-name=xxxxxxx     数据可的驱动

spring.jpa.show-sql=true  显示sql

这个属性设置后,Spring 将显示所有执行到数据库的 SQL 语句。这对于调试非常有用,因为它可以帮助开发者理解应用程序生成的 SQL 语句,并检查其是否如预期那样工作。 开发者通常在开发阶段开启这个设置,但在生产环境中关闭它以提高性能。

spring.jpa.properties.hibernate.format_sql=true   格式化

这个属性设置后,Hibernate 将格式化输出的 SQL 语句,使其更易于阅读。格式化的 SQL 语句会有缩进,并且会使用标准的 SQL 语法,而不是使用缩写或特定于数据库的语法。 和 spring.jpa.show-sql 一样,这个配置也主要用于开发环境。

spring.jpa.hibernate.ddl-auto=update    自动更新数据库表结构

这个属性用于控制 Hibernate 如何处理数据库模式(schema)。ddl-auto 是 "database change log" 的缩写。 update 的值意味着 Hibernate 会自动执行必要的DDL(数据定义语言)操作来更新或创建数据库模式,以匹配实体类的定义。如果数据库中不存在相应的表,它会创建表;如果表存在,它会更新表结构以匹配实体类的变化。 这个配置适用于开发环境,因为它可能会在每次运行应用程序时修改数据库结构,这在生产环境中可能会导致问题。

六、pojo中的java文件

@Table(name = "tb_user")  指定一个实体类映射到的数据库表的名字,如果不存在则会新建一个
@Entity  用于标识一个类是一个 JPA 实体,将这个类映射成了一个表

public class User{

//创建新的数据

@Id    主键的名
@GeneratedValue( strategy = GenerationType.IDENTITY ) 

用于指定主键的生成策略,即在实体被持久化到数据库时,如何生成主键值。

GenerationType.AUTO: 自动选择数据库支持的主键生成策略。

GenerationType.TABLE: 使用数据库的 IDENTITY 或 SERIAL 数据类型,这通常适用于 Oracle 和 SQL Server。

GenerationType.IDENTITY: 依赖于数据库的自动增长字段,这通常是 MySQL 和 PostgreSQL 的默认行为。

GenerationType.SEQUENCE: 使用数据库的序列生成主键值,这适用于支持序列的数据库,如 Oracle 和 PostgreSQL。

GenerationType.NATIVE: 根据底层数据库的能力自动选择 IDENTITY 或 SEQUENCE。

@Column(name="user_id")  

将实体类中的字段(属性)映射到数据库表中的列

如果未指定 name 属性,JPA 默认将列的名称设置为与实体类中字段的名称相同,即使用驼峰式命名转换为下划线分隔的命名(例如,userAddress 会转换为 user_address)。

在某些情况下,数据库列的名称可能与实体类的字段名称不同,或者需要映射到不同的列,这时就需要使用 name 属性来指定正确的列名。

@Column 注解是一个非常有用的 JPA 注解,它允许开发者自定义实体属性映射到数据库列的属性。

name:指定数据库列的名称。如果不提供,则默认使用 Java 字段名(驼峰式命名转换为下划线分隔的命名)。

unique:指定列是否应该是唯一的。如果设置为 true,则该列将不允许有重复的值。

nullable:指定列是否可以为 null。如果设置为 false,则该列在数据库中不能为空。

updatable:指定列是否可以更新。如果设置为 false,则该列的值在实体更新时不会被更新。

insertable:指定列是否可以插入。如果设置为 false,则该列在实体插入时不会被插入。

length:指定字符串类型的列的最大长度。

precision 和 scale:对于数值类型,precision 指定了数字的总位数,而 scale 指定了小数点后的位数。

columnDefinition:允许指定自定义的 SQL 列定义。

table:指定该列所属的表,如果与实体中 @Table 注解指定的表不同时使用。

insertable 和 updatable:这两个属性分别控制列在插入和更新操作中的行为。

updatable 和 insertable:与 insertable 和 updatable 类似,控制列在插入和更新操作中的行为。

selected:如果设置为 false,则该列在 SELECT 查询中不会被包括。

Temporal:对于日期和时间类型的字段,指定如何将日期时间值转换为 SQL 类型。

TemporalType:与 Temporal 结合使用,指定具体的日期时间类型,如 TemporalType.DATE、TemporalType.TIME 或 TemporalType.TIMESTAMP。

private Integer userId;

private String username;

private String userword;

private String email;

//一个get和一个set

public Integer getUserId(){

return userId;

}

public void setUserId(Integer userId){

this.userId=userId;

}

.......

//生成toString方法

@Override

public String toString(){

return "User{" +

"userId=" + userId +

",username=' " + username + '\' ' +

",password=' " +  password + '\ ' ' +

",email = ' " + email + ' \ ' ' +

' } ';

}

}

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++:指针和引用

指针的基础 数据在内存当中是怎么样被存储的 数据在内存中的存储方式取决于数据的类型和计算机的体系结构 基本数据类型 整数类型:整数在内存中以二进制补码的形式存储。对于有符号整数,最高位为符号位,0 表示正数,1 表示负数。…

LabVIEW多通道面阵烟雾透过率测试系统

LabVIEW面阵烟雾透过率测试系统通过高精度多通道数据采集和实时处理技术,能够实现对固体推进剂烟雾的透过率进行精确测量。系统利用了LabVIEW的图形化编程环境及其丰富的设备驱动接口,有效提升了测试的自动化程度和数据处理的实时性。 项目背景&#xf…

PDF电子发票信息转excel信息汇总

PDF电子发票信息提取,支持将pdf发票文件夹下的剩所有发票,转为excel格式的信息,对于发票量比较大,不好统计,需要一个一个去统计的情况,可节省2个点以上的时间,一次下载,终身有效。 使…

51c视觉~合集7

我自己的原文哦~ https://blog.51cto.com/whaosoft/11536996 #Arc2Face 身份条件化的人脸生成基础模型,高一致性高质量的AI人脸艺术风格照生成 将人脸特征映射到SD的CLIP的编码空间,通过微调SD实现文本编码器转换为专门为将ArcFace嵌入投影到CLIP潜在…

【西瓜书】机器学习的模型评估

来源于西瓜书、南瓜书等内容。 误差与偏差 学习器的实际预测输出与样本的真实输出之间的差异,称为”误差“(error)。学习器在训练集上的误差,称为”训练误差“(training error)或”经验误差“(…

Mac安装Docker Desktop搭建K8s集群,解决镜像无法下载的问题

使用 Docker Desktop可以在本地方便地搭建出 K8s集群,但开启 K8s集群后往往会遇到 K8s 镜像拉取失败问题,本文旨在解决该问题,从而在本地搭建 K8s 集群。 安装Docker Desktop 安装 Docker Desktop 建议安装历史版本, 不建议安装最新版。因为…

【Leecode】Leecode刷题之路第54天之旋转矩阵

题目出处 54-螺旋矩阵-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 54-旋转矩阵-官方解法 方法1:模拟 思路: 代码示例:(Java&#xff…

【YOLOv8】安卓端部署-1-项目介绍

【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients(系数)作用1.…

Cesium教程01_实现Cartesian3 三维坐标操作

在 Vue 项目中使用 Cesium 实现 Cartesian3 三维坐标操作 目录 一、引言二、Cesium 与 Cartesian3 的优势三、示例应用:在地图上标注和计算距离 1. 项目结构2. 主要代码实现3. 运行与效果 四、代码讲解与扩展 1. Cartesian3 的基础操作2. 距离计算与中点标注 五、…

Qt5-雷达项目

界面: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QTimer> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget(); pr…

A040-基于springboot的智能停车计费系统设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

数据结构初识

目录 1.初识 2.时间复杂度 常见时间复杂度举例&#xff1a; 3.空间复杂度 4.包装类&简单认识泛型 4.1装箱和拆箱 5.泛型 6.泛型的上界 7.泛型方法 8.List接口 1.初识 1.多画图 2.多思考 3.多写代码 4.多做题 牛客网-题库/在线编程/剑指offer 算法篇&#xff1a…

CUDA HOME does not exist, unable to compile CUDA op(s),已解决

有一个服务器上没有/usr/loacl/cuda&#xff0c;我也没有权限在这个目录装cuda&#xff0c;使用pip装完torch&#xff0c;llama factory使用时出现&#xff1a; 应该是本地没有nvcc相关执行文件。 先使用了&#xff1a; conda install -c cudatoolkit-dev不管用&#xff0c; …

杰发科技AC7801——ADC定时器触发的简单使用

使用场景 在需要多次采样结果的情况下&#xff0c;比如1s需要10w次的采样结果&#xff0c;可以考虑使用定时器触发采样&#xff0c;定时器设置多少的时间就会多久采样转换一次。 再加上使用dma&#xff0c;采样的结果直接放在dma的数组里面。 实现了自动采样&#xff0c;自动…

【有啥问啥】基于文本的图像检索(Text-Based Image Retrieval, TBIR)技术详解

基于文本的图像检索&#xff08;Text-Based Image Retrieval, TBIR&#xff09;技术详解 1. 背景理论知识 1.1 什么是基于文本的图像检索&#xff08;TBIR&#xff09;&#xff1f; 基于文本的图像检索&#xff08;Text-Based Image Retrieval&#xff0c;简称TBIR&#xff…

探索PyMuPDF:Python中的强大PDF处理库

文章目录 **探索PyMuPDF&#xff1a;Python中的强大PDF处理库**第一部分&#xff1a;背景第二部分&#xff1a;PyMuPDF是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;至少5个简单的库函数使用方法第五部分&#xff1a;结合至少3个场景…

HarmonyOS Next 关于页面渲染的性能优化方案

HarmonyOS Next 关于页面渲染的性能优化方案 HarmonyOS Next 应用开发中&#xff0c;用户的使用体验至关重要。其中用户启动APP到呈现页面主要包含三个步骤&#xff1a; 框架初始化页面加载布局渲染 从页面加载到布局渲染中&#xff0c;主要包含了6个环节&#xff1a; 执行页…

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

出现cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于YUM仓库源无法找到或无法访问&#xff0c;导致YUM无法正常工作。这种情况常见于CentOS 7系统。解决这个问题需要检查几个方面&#xff0c;如网络连接、DNS设置和YUM仓库源配置。 &#x1f9d1; 博主简介&…

架构图解析:如何构建高效的微服务系统

在当今的数字化浪潮中&#xff0c;构建高效、灵活且可扩展的系统已成为企业的重要目标。微服务架构作为一种先进的软件设计模式&#xff0c;通过将复杂的应用程序分解为一系列小型、独立的服务&#xff0c;显著提升了系统的灵活性、可扩展性和维护性。本文将通过解析微服务系统…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧&#xff0c;谢谢了附录coco80类名称 笔记本 华为m…