当前位置: 首页 > news >正文

Springboot项目基础配置:小白也能快速上手!

推荐文章

给软件行业带来了春天——揭秘Spring究竟是何方神圣(一)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(二)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(三)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(四)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(五)


文章目录

  • 推荐文章
      • 创建项目
      • 导入依赖
      • 配置Application
      • 连接数据库
      • 项目结构初始化
        • 数据层(POJO)
        • 数据访问层(Mapper)
        • 业务层(Service)
        • 控制层(Controller)
      • 测试项目


创建项目

打开idea,新建一个项目。

image.png

选择springboot进行初始化。

image.png

勾选需要添加的依赖(也可后续在pom文件中进行添加也可)

image.png

点击完成,即可生成对应的项目。

image.png

导入依赖

打开pom.xml文件,可以看到目前项目的依赖配置

image.png

配置Application

将application文件更改为.yml格式(不改使用.properties格式也是可以的,看个人习惯)
image.png

server:port: 8080
spring:#解决SpringBoot2.6.0与swagger冲突问题【原因是在springboot2.6.0中将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错,解决办法是切换回原先的AntPathMatcher】mvc:pathmatch:matching-strategy: ant_path_matcher#配置数据源datasource:#配置数据源类型type: com.zaxxer.hikari.HikariDataSource#配置数据库连接属性driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/testusername: rootpassword: xxxxxxhikari:connection-test-query: SELECT 1connection-timeout: 60000idle-timeout: 500000max-lifetime: 540000maximum-pool-size: 12minimum-idle: 10pool-name: GuliHikariPoolthymeleaf:#模板的模式,支持 HTML, XML TEXT JAVASCRIPTmode: HTML5#编码 可不用配置encoding: UTF-8#开发配置为false,避免修改模板还要重启服务器cache: false#配置模板路径,默认是templates,可以不用配置prefix: classpath:/static/jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8servlet:#设置文件上传上限multipart:max-file-size: 10MBmax-request-size: 100MB
mybatis-plus:configuration:#添加日志支持log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:/mapper/**/*.xml

连接数据库

连接数据库,填写数据库相应的信息,和application中的datasource数据源数据保持一致。

image.png

点击连接,信息无误后即可看到连接成功,数据库也出现在idea侧边栏中。

image.png

同时创建后续的测试数据

image.png

项目结构初始化

创建需要的mapper、service、cotroller包等
image.png

数据层(POJO)

image.png

POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。

创建entity包
image.png

public class test {private Integer id;private String user;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUser() {return user;}public void setUser(String user) {this.user = user;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

数据访问层(Mapper)

Mapper模式通常是指对象-关系映射(ORM)中的组件。
它负责将领域对象和数据库表之间进行映射,实现数据的读取和写入。Mapper将数据库操作转换为对象操作,屏蔽了底层数据库的细节,使得开发人员可以使用面向对象的方式操作数据。
它可以处理对象与关系型数据库之间的转换,包括查询、插入、更新和删除等操作。

创建mapper接口
image.png

@Repository
@Mapper
public interface TestMapper {/*** 增加一条数据* @param tests 数据*/void add(test tests);/*** 删除一条数据* @param id 被删除数据的id*/void delete(Integer id);/*** 修改一条数据* @param tests 修改的数据*/void update(test tests);/*** 根据id去查询一条数据* @param id 查询的id*/test queryById(Integer id);/*** 查询全部数据* @return*/List<test> queryAll();}

创建mapper接口对应的xml文件

image.png

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.nolan.malls.mapper.TestMapper"><insert id="add" parameterType="com.nolan.malls.entity.test">insert into tb_test (id,user,password) values (#{id},#{user},#{password});</insert><update id="update" parameterType="com.nolan.malls.entity.test">update tb_test set id=#{id},user=#{user},password=#{password} where id=#{id};</update><select id="queryById" parameterType="integer" resultType="com.nolan.malls.entity.test">select * from tb_test where id=#{id};</select><select id="queryAll" resultType="com.nolan.malls.entity.test">select * from tb_test;</select><delete id="delete" parameterType="integer">delete from tb_test where id=#{id};</delete></mapper>

业务层(Service)

Service层:服务层
由于Dao里面存放了对表操作的方法,entity类中存放了映射表的POJO类。Service的作用就是将Dao和entity类整合起来,进行再次封装,封装成一个方法,我们调用这个方法,就实现了对某个表的增删改查操作。

Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。

创建service层

image.png

@Service
public class TestServiceImpl implements TestService {@Autowiredprivate TestMapper testMapper;@Overridepublic void add(test tests){testMapper.add(tests);}@Overridepublic void update(test tests){testMapper.update(tests);}@Overridepublic test queryById(Integer id){return testMapper.queryById(id);}@Overridepublic List<test> queryAll(){return testMapper.queryAll();}@Overridepublic void delete(Integer id){testMapper.delete(id);}}
public interface TestService {/*** 增加一条数据* @param tests 数据*/void add(test tests);/*** 删除一条数据* @param id 被删除数据的id*/void delete(Integer id);/*** 修改一条数据* @param tests 修改的数据*/void update(test tests);/*** 根据id去查询一条数据* @param id 查询的id*/test queryById(Integer id);/*** 查询全部数据* @return*/List<test> queryAll();}

控制层(Controller)

Controller
负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。

Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

创建controller层

image.png

@Controller
@RequestMapping(value = "/test")
public class TestController {@Autowiredprivate TestService testService;@GetMapping@ResponseBodypublic String queryAll(){List<test> testList=testService.queryAll();return JSON.toJSONString(testList);}//使用了RestFull风格@GetMapping("/{id}")@ResponseBodypublic String query(@PathVariable(value = "id")Integer id){test tests=testService.queryById(id);List<test> testList = new ArrayList<>();testList.add(tests);return JSON.toJSONString(testList);}@PostMapping@ResponseBodypublic String add(@RequestBody test tests){testService.add(tests);return "添加成功";}@DeleteMapping@ResponseBodypublic String delete(@PathVariable("id") Integer id){testService.delete(id);return "删除成功";}@PutMapping@ResponseBodypublic String update(@PathVariable("id")Integer id,@RequestBody test test){test.setId(id);testService.update(test);return "修改完成";}}

测试项目

选择idea中自带的http client工具,进行测试请求。
image.png

GET http://127.0.0.1:9080/test
Accept: application/json

image.png

至此,一个简单的Springboot项目就搭建完成了。

在这里插入图片描述

相关文章:

Springboot项目基础配置:小白也能快速上手!

推荐文章 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;一&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;二&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;三&#xff09; 给软件行业带来了春天—…...

20240127在ubuntu20.04.6下配置whisper

20240131在ubuntu20.04.6下配置whisper 2024/1/31 15:48 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装&#xff01; 3、配置whispe…...

C# 递归执行顺序

为了方便进一步理解递归&#xff0c;写了一个数字输出 class Program {static void Main(string[] args){int number 5;RecursiveDecrease(number);}static void RecursiveDecrease(int n){if (n > 0){Console.WriteLine("Before recursive call do : " n);Rec…...

go 实现暴力破解数独

一切罪恶的来源是昨晚睡前玩了一把数独&#xff0c;找虐的选了个最难的模式&#xff0c;做了一个多小时才做完&#xff0c;然后就睡不着了..........程序员不能受这委屈&#xff0c;今天咋样也得把这玩意儿破解了 破解思路&#xff08;暴力破解加深度遍历&#xff09; 把数独…...

go语言-字符串处理常用函数

本文介绍go语言处理字符串类型的常见函数。 ## 多行字符串 在 Go 中创建多行字符串非常容易。只需要在你声明或赋值时使用 () 。 str : This is a multiline string. ## 字符串的拼接 go // fmt.Sprintf方式拼接字符串 str1 : "abc" str2 : "def" …...

DevOps落地笔记-05|非功能需求:如何有效关注非功能需求

上一讲主要介绍了看板方法以及如何使用看板方法来解决软件研发过程中出现的团队过载、工作不均、任务延期等问题。通过学习前面几个课时介绍的知识&#xff0c;你的团队开始源源不断地交付用户价值。用户对交付的功能非常满意&#xff0c;但等到系统上线后经常出现服务不可用的…...

vs 撤销本地 commit 并保留更改

没想到特别好的办法&#xff0c;我想的是用 vs 打开 git 命令行工具 然后通过 git 命令来撤销提交&#xff0c;尝试之前建议先建个分支实验&#xff0c;以免丢失代码&#xff0c; git 操作见 git 合并多个 commit / 修改上一次 commit...

深度解读NVMe计算存储协议-1

随着云计算、企业级应用以及物联网领域的飞速发展&#xff0c;当前的数据处理需求正以前所未有的规模增长&#xff0c;以满足存储行业不断变化的需求。这种增长导致网络带宽压力增大&#xff0c;并对主机计算资源&#xff08;如内存和CPU&#xff09;造成极大负担&#xff0c;进…...

CHS_06.2.3.4_2+用信号量实现进程互斥、同步、前驱关系

CHS_06.2.3.4_2用信号量实现进程互斥、同步、前驱关系 知识总览信号量机制实现进程互斥信号量机制实现进程同步信号量机制实现前驱关系 知识回顾 各位同学 大家好 在这个小节中 我们要学习怎么用信号量机制来实现进程的同步互制关系 知识总览 那么 我们之前学习了互斥的几种软…...

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…...

mysql8安装基础操作(一)

一、下载mysql8.0 1.查看系统glibc版本 这里可以看到glibc版本为2.17&#xff0c;所以下载mysql8.0的版本时候尽量和glibc版本对应 [rootnode2 ~]# rpm -qa |grep -w glibc glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 glibc-common-2.17-222.el7.x86_64 gl…...

MIT6.5830 实验0

前置 本次实验使用 Golang 语言实现&#xff0c;在之前的年份中&#xff0c;都是像 cs186 那样使用 Java 实现。原因&#xff1a; Golang 语言作为现代化语言&#xff0c;简单易上手但功能强大。 使参加实验的同学有同一起跑线&#xff0c;而不是像Java那样&#xff0c;有些同…...

【简便方法和积累】pytest 单元测试框架中便捷安装插件和执行问题

又来进步一点点~~~ 背景&#xff1a;之前写了两篇关于pytest单元测试框架的文章&#xff0c;本篇内容对之前的做一个补充 一、pytest插件&#xff1a; pytest 有非常多的插件&#xff0c;很方便&#xff0c;以下为插件举例&#xff1a; pytest&#xff0c;pytest-html&#x…...

Zabbix数据库分离与邮件报警

基础环境&#xff1a;要有zabbix服务端与被监控端实验目标&#xff1a;源数据库与服务端存放在一台服务器上&#xff0c;分离后源数据库单独在一台服务器上&#xff0c;zabbix服务端上不再有数据库。环境拓扑图&#xff1a; 实验步骤&#xff1a; 1.在8.7服务器上安装相同版本…...

mybatisplus-多数据源配置

1. 流程 pom文件yml配置多数据源具体服务添加注解DS(“***”) 1.pom文件 <!--mybatis plus 起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</vers…...

微信小程序(二十八)网络请求数据进行列表渲染

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.GET请求的规范 2.数据赋值的方法 源码&#xff1a; index.wxml <!-- 列表渲染基础写法&#xff0c;不明白的看上一篇 --> <view class"students"><view class"item">&…...

ubuntu22.04 安装conda

要在Ubuntu 22.04上安装Anaconda&#xff0c;可以遵循以下步骤&#xff1a; 首先&#xff0c;打开终端并更新系统包仓库&#xff0c;也需要安装curl工具&#xff0c;这可以通过以下命令完成&#xff1a; sudo apt update && sudo apt install curl -y使用curl命令行工具…...

W801学习笔记十:HLK-W801制作学习机/NES游戏机(总结)

本章总结一下整个开发过程中遇到的问题&#xff1a; 1、引脚的抗干扰问题&#xff1a; 屏幕显示的时候&#xff0c;概率出现花屏。无论怎么修改代码都不能解决&#xff0c;一个偶然的机会&#xff0c;发现当手触摸屏幕的WR和CS引脚时&#xff0c;屏幕会正常。查阅资料&#x…...

《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)

文章目录 6.1 语义化标签的重要性6.1.1 基础知识6.1.2 案例 1&#xff1a;使用 <article>, <section>, <aside>, <header>, 和 <footer>6.1.3 案例 2&#xff1a;构建带有嵌套语义化标签的新闻网站6.1.4 案例 3&#xff1a;创建一个带有 <mai…...

分析HarmonyOS应用/服务的CPU活动性能

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具&#xff0c;可以实时查看应用/服务的CPU使用率和线程活动&#xff0c;也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析&#xff0c;您可以了解在一段时间内执行了哪些方法&#xff0c;以及…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...