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.rhkb.cn/news/475094.html

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

相关文章

C++——智能指针剖析

参考: 恋恋风辰官方博客 动态内存管理 - cppreference.com SRombauts/shared_ptr: 一个最小的 shared/unique_ptr 实现,用于处理 boost/std::shared/unique_ptr 不可用的情况。 C智能指针_c 智能指针-CSDN博客 当…

【java】java入门

盘符名称冒号---------盘符切换 dir---------------查看当前路径下的内容 cd目录--------进入单级目录 cd..----------回退到上一级目录 cd \----------回退到盘符目录 cls----------清屏 exit 为什么要配环境变量? 在任意的目录下都可以打开指定的软件。把软件的路…

11.19.2024刷华为OD

文章目录 HJ51HJ53 杨辉三角HJ56HJ57 高精度整数加法HJ58HJ60 简单题HJ63 DNA序列(简单题)语法知识记录 HJ51 https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d?tpId37&tags&title&difficulty0&judgeStatus0&…

数据挖掘英语及概念

分类 classify 上涨或跌 回归 regression 描述具体数值 分类模型评估 1.混淆(误差)矩阵 confusion matrix 2.ROC曲线 receiver operating characteristic curve 接收者操作特征曲线 3.AUC面积 area under curve ROC曲线下与坐标轴围成的面积&#x…

GOLANG+VUE后台管理系统

1.截图 2.后端工程截图 3.前端工程截图

go-zero(三) 数据库操作

go-zero 数据库操作 在本篇文章中,我们将实现一个用户注册和登录的服务。我们将为此构建一个简单而高效的 API,包括请求参数和响应参数的定义。 一、Mysql连接 1. 创建数据库和表 在 MySQL 中创建名为 test_zero的数据库,并创建user 表 …

MFC图形函数学习09——画多边形函数

这里所说的多边形是指在同一平面中由多条边构成的封闭图形,强调封闭二字,否则无法进行颜色填充,多边形包括凸多边形和凹多边形。 一、绘制多边形函数 原型:BOOL Polygon(LPPOINT lpPoints,int nCount); 参数&#x…

【算法】回文数索引、回文子串输出、整数反转

目录 回文数索引 思路: 回文子串输出 思路 回文数索引 思路: 目标字母索引可能是一个或者是两个,返回任意的一个索引即可,如果已经是回文串则直接返回-1。 下面列出几种目标删除字母可能出现的位置: 我们可以先定…

MAC创建一个自动操作,启动系统【睡眠】功能,并将绑定快捷键

目的 通过 Automator 创建一个服务来启动系统【睡眠】这个功能,并绑定快捷键。 步骤一:创建 Automator 服务 打开 Automator: ○ 在 Spotlight 中搜索 Automator,然后打开。选择服务类型: ○ 在 Automator 的启动界…

ThinkPHP6门面(Facade)

门面 门面(Facade) 门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。 系统已经为大部分…

1436:数列分段II -整型二分

1436&#xff1a;数列分段II 题目来源&#xff1a;一本通 【输入样例】 5 3 4 2 4 5 1【输出样例】 6题意 将数列分成若干段&#xff0c;最多M段&#xff0c;求这些段中最大值中的最小值。&#xff08;M<N是M的约束&#xff09; 思路 最大最小问题考虑二分。由于M越大&…

Linux-第1集-基础指令 pwd、cd……入门

欢迎来到Linux操作系统的世界&#xff0c;本集我会用最简单的语言给大家讲解最基础的指令。 首先我们要明确Linux是通过指令完成相应的操作&#xff0c; 由于Linux的用户都是行内人&#xff0c;所有我们在学习此操作系统时看到的都是指令界面&#xff0c;而非像Windows操作系…

Golang | Leetcode Golang题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; func nearestPalindromic(n string) string {m : len(n)candidates : []int{int(math.Pow10(m-1)) - 1, int(math.Pow10(m)) 1}selfPrefix, _ : strconv.Atoi(n[:(m1)/2])for _, x : range []int{selfPrefix - 1, selfPrefix, selfPrefix …

【最新鸿蒙应用开发】——合理使用自定义弹框

自定义弹窗选型 合理选择不同的系统能力实现弹窗&#xff0c;有利于提升应用开发效率&#xff0c;实现更好的功能需求&#xff0c;因此了解自定义弹窗的选型和差异非常重要。在应用开发中&#xff0c;为了选择出合适的弹窗选型&#xff0c;从使用场景上&#xff0c;需要重点关…

044 商品详情(异步编排)

文章目录 销售属性分组规格参数异步编排application.ymlMyThreadConfig.javaThreadPoolConfigProperties.javaSkuInfoServiceImpl.java 销售属性 sku表&#xff1a;tb_sku_info sku对应销售属性表&#xff1a;tb_sku_sale_attr_value 结果 在详情页系统中&#xff0c;切换属…

【热门主题】000054 ECMAScript:现代 Web 开发的核心语言

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

进程优先级——Linux

目录 前言 查看系统进程 进程优先级的修改 Linux调度与切换 Cpu的进程切换 Linux实现调度的算法 前言 进程访问系统资源要排队等待&#xff0c;而cpu资源分配和执行的先后顺序&#xff0c;就是指进程的优先级。进程的优先级&#xff0c;保证了必要进程的执行。进程访问某…

11.18 Maven-SpringBootWeb入门

Maven 什么是maven? Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 Apache 软件基金会&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受欢迎的开源软件基金会&#xff0c;也是一个专门为支持开源项目而生的非盈利性组织…

selenium元素定位校验以及遇到的元素操作问题记录

页面元素定位方法及校验 使用比较多的是通过id、class和xpath来对元素进行定位。在定位前可以现在浏览器验证是否可以找到指定的元素。这样就不用每添加一个元素定位都运行代码来检查定位方式表达式是否正确。 使用XPATH定位 在浏览器F12&#xff0c;找到元素&#xff0c;在元…

【UGUI】Unity 背包系统实现02:道具信息提示与显示

在游戏开发中&#xff0c;背包系统是一个常见的功能模块&#xff0c;用于管理玩家拾取的物品。本文将详细介绍如何在 Unity 中实现一个简单的背包系统&#xff0c;包括道具信息的提示和显示功能。我们将通过代码和场景搭建来逐步实现这一功能。 1. 功能需求清单 在实现背包系…