搭建SpringBoot项目
文章目录
- 前言
- 准备工具
- 创建项目
前言
为什么使用SpringBoot?它有什么好处?
- SpringBoot可以快速构建出独立的Spring应用,简化了配置文件。
- 内嵌Tomcat服务器,无须手动部署war文件。
准备工具
- idea2022
- navicat16
- postman
- jdk1.8
创建项目
File->New->Project->Spring Initializr
输入项目名,组名,选择Java8版本(SpringBoot3.0版本需要jdk17,3.0之前的版本用jdk8,SANPSHOP是发行版,会优先用本地的maven依赖。)
点击Next,勾选4个依赖。
解释:
- Lombok依赖可以根据成员变量生成get和set方法;可以根据成员变量生成类的构造函数;重写toString()和hashCode方法等。
- Spring Web依赖可以自动帮我们引入web模块开发需要的相关jar包。
- mybatis framework 就是把mybatis框架的依赖引进来 可以对数据库做持久化操作 musql。
- mysql就是数据库连接驱动 java操作数据库必须有这个依赖。
连接数据库。
输入用户名,密码以及所要连接的数据库,并进行测试连接的操作。
测试连接成功后点击应用即可。这边可以用生成器生成对应的实体等类,根据个人选择,我选用的生成器是mybaitscodehelper。
生成器配置如下:
生成的entity,mapper,service,xml等文件层级关系如下:
代码如下:
entity:
package com.xct.springboot.mybatisHelper.entitys;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author xct* @date 2023年02月28日 09:12*/
@Schema
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "novel")
public class NovelHelper implements Serializable {@TableId(value = "id", type = IdType.INPUT)@Schema(description="")private Integer id;/*** 书名*/@TableField(value = "novel_name")@Schema(description="书名")private String novelName;/*** 作者*/@TableField(value = "author")@Schema(description="作者")private String author;/*** 类型*/@TableField(value = "`type`")@Schema(description="类型")private String type;/*** 价格*/@TableField(value = "price")@Schema(description="价格")private BigDecimal price;/*** 出版社*/@TableField(value = "publish")@Schema(description="出版社")private String publish;/*** 发行时间*/@TableField(value = "create_time")@Schema(description="发行时间")private Date createTime;/*** 逻辑删除状态*/@TableField(value = "logic_state")@Schema(description="逻辑删除状态")private Boolean logicState;private static final long serialVersionUID = 1L;public static final String COL_ID = "id";public static final String COL_NOVEL_NAME = "novel_name";public static final String COL_AUTHOR = "author";public static final String COL_TYPE = "type";public static final String COL_PRICE = "price";public static final String COL_PUBLISH = "publish";public static final String COL_CREATE_TIME = "create_time";public static final String COL_LOGIC_STATE = "logic_state";
}
mapper:
package com.xct.springboot.mybatisHelper.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xct.springboot.mybatisHelper.entitys.NovelHelper;
import org.apache.ibatis.annotations.Mapper;/*** @author xct* @date 2023年02月28日 09:12*/
@Mapper
public interface NovelHelperMapper extends BaseMapper<NovelHelper> {
}
service:
package com.xct.springboot.mybatisHelper.service;import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xct.springboot.mybatisHelper.entitys.NovelHelper;
import com.xct.springboot.mybatisHelper.mapper.NovelHelperMapper;
/*** @author xct* @date 2023年02月28日 09:12*/
@Service
public class NovelService extends ServiceImpl<NovelHelperMapper, NovelHelper> {}
xml文件:
<?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.xct.springboot.mybatisHelper.mapper.NovelHelperMapper"><resultMap id="BaseResultMap" type="com.xct.springboot.mybatisHelper.entitys.NovelHelper"><!--@mbg.generated--><!--@Table novel--><id column="id" jdbcType="INTEGER" property="id" /><result column="novel_name" jdbcType="VARCHAR" property="novelName" /><result column="author" jdbcType="VARCHAR" property="author" /><result column="type" jdbcType="VARCHAR" property="type" /><result column="price" jdbcType="DECIMAL" property="price" /><result column="publish" jdbcType="VARCHAR" property="publish" /><result column="create_time" jdbcType="TIMESTAMP" property="createTime" /><result column="logic_state" jdbcType="BOOLEAN" property="logicState" /></resultMap><sql id="Base_Column_List"><!--@mbg.generated-->id, novel_name, author, `type`, price, publish, create_time, logic_state</sql>
</mapper>
创建完成后,在yml文件中编写相关配置。
server:port: 8082
spring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/novel2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=trueusername: rootpassword: okmybatis-plus:mapper-locations: classpath:/mapper/**/*Mapper.xml,classpath:/mybatis/**/*.xml
这里需要注意的是:yml文件中用的是mybatisPlus映射,所以在pom文件中要引入mybatisPlus依赖。
将生成的类所需要的依赖加入到pom文件中。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.9</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xct</groupId><artifactId>springboot</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot</name><description>springboot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.5.2</version></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1</version></dependency><dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-annotations</artifactId><version>2.2.0</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.5.2</version></dependency><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
编写controller层:
package com.xct.springboot.controller;import com.xct.springboot.mybatisHelper.entitys.NovelHelper;
import com.xct.springboot.mybatisHelper.service.NovelService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;import java.util.Date;
import java.util.List;/*** @author xct* @date 2023年02月28日 09:13*/
@RestController
@AllArgsConstructor
@RequestMapping("novel")
public class NovelController {private final NovelService novelService;/*** @author xct* @date 2023/2/28 9:14* @name list* @description 增加*/@GetMapping("list")public List<NovelHelper> list(){System.out.println(novelService.list());return novelService.list();}/*** @author xct* @date 2023/2/28 13:24* @name add* @description 增加*/@PostMapping("add")public boolean add(NovelHelper helper){helper.setCreateTime(new Date());return novelService.save(helper);}/*** @author xct* @date 2023/2/28 13:24* @name update* @description 修改*/@PutMapping("update")public boolean update(NovelHelper helper){return novelService.updateById(helper);}/*** @author xct* @date 2023/3/1 14:24* @name delete* @description 删除*/@DeleteMapping("delete")public boolean delete(Long id){return novelService.removeById(id);}
}
在postman中进行测试:
查询:
增加:
修改:
删除:
注意:
- 在实际开发的项目中,通常controller层的接口返回类型都由架构师构建的Result类包装。
- 通常Spring Boot项目都应该引入Swagger3.0技术,生成Swagger接口文档,便于前后端联调。
相关文章:

搭建SpringBoot项目
文章目录前言准备工具创建项目前言 为什么使用SpringBoot?它有什么好处? SpringBoot可以快速构建出独立的Spring应用,简化了配置文件。内嵌Tomcat服务器,无须手动部署war文件。 准备工具 idea2022navicat16postmanjdk1.8 创建项目 File-&…...

“一网统管”视频融合平台EasyCVR页面tab切换细节优化
EasyCVR视频融合平台基于云边端协同架构,能支持海量视频的轻量化接入与汇聚管理,借助大数据分析的决策判断,为网络摄像头、网络存储设备、智能终端、无人机、车载设备、移动执法仪、视频监控平台等提供一体化的视频接入、分发、存储、处理等能…...
【Python入门第二十天】Python Lambda
lambda 函数是一种小的匿名函数。 lambda 函数可接受任意数量的参数,但只能有一个表达式。 语法 lambda arguments : expression执行表达式并返回结果: 实例 一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果&…...

比特数据结构与算法(第四章_下)二叉树OJ(力扣:144,965,104,226,100,572)
144. 二叉树的前序遍历难度简单给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root [1,null,2,3]输出:[1,2,3]示例 2:输入:root [ ]输出:[ ]示例 3:输入&#…...

【C++】inline 内联函数
文章目录📕 概念📕 使用前的准备📕 使用📕 特性📕 概念 在 C 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表…...

如何审计一个智能合约
智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用程序都很重要,…...

不用PS,也能实现抠图的工具
对于非设计专业的同学来说,专门下载 PS 抠图有点大材小用,而且运用 PS 对电脑配置一定要求。不过现在有了更多选择,市面上出现了越来越多的抠图软件,不过越多的抠图软件选择也意味着需要花费时间试错因此本文将给大家推荐 3 款非常…...
集群化存储的概述
集群化存储的概述 1、存储的分类方式: 存储的分类-网络拓扑 用于存储的网络拓扑 NAS:小米路由器;SAN:存储区网络–>网络网和存储网络区分开DAS:常见的存储;本地存储 存储分类-存储技术网络拓扑存储技…...
asyncio 并发编程(一)
Python2 时代高性能的网络编程主要是 Twisted、Tornado 和 Gevent 这三个库,但是它们的异步代码相互之间既不兼容也不能移植。Gvanrossum 希望在 Python 3 实现一个原生的基于生成器的协程库,其中直接内置了对异步 IO 的支持,这就是 asyncio&…...
春招冲刺(二):BFC 盒子面试题总结
BFC 盒子面试题总结 Q1:BFC盒子是什么? BFC全称是Block Formatting Context 意思就是块级格式化上下文。 可以把BFC看做一个容器,容器里边的元素不会影响到容器外部的元素。 Q2:如何创建BFC? 根元素:bo…...

Ep_计网面试题-本地IP地址怎么一层层向上转换?
将数据加上报头打包在一起形成新的数据包继续往下一层传递。拆包的时候就是把数据包去掉包头作为新数据传给上一层 视频讲解: https://edu.csdn.net/course/detail/38090 点我进入 面试宝典 很多人不知道面试问什么,或者其他的XXGuide,那里边的太多没用的,也没有源码解析,都…...

MySQL高级三
目录 三、MySQL高级03 3.1 MyCat 3.1.1 MyCat简介 3.1.2 中间件的作用 3.2 安装MyCat 3.3 主从复制 3.3.1 主从复制的原理 3.3.2 主从复制的好处 3.3.3 配置主从复制 三、MySQL高级03 如果虚拟机的磁盘已满,可以对磁盘进行重新分配 参考:虚拟…...

set和map的基本使用
目录 关联式容器 要点分析 键值对 pair介绍 set 模板参数列表: set的构造: 常用接口 操作 multiset map map的构造 插入 make_pair map的迭代器 operator[] multimap multimap中为什么没有重载operator[] 关联式容器 关联式容器也是用…...

已解决pip install wxPython模块安装失败
已解决(pip install wxPython安装失败)error: legacy-instal1-failure Encountered error while trying to install package.wxPython note: This is an issue with the package mentioned above,not pip. hint : See above for output from …...

Linux基础——连接Xshell7
个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...

C++——智能指针1
目录 RAII auto_ptr模拟实现 智能指针拷贝问题 唯一指针 shared_ptr(可以拷贝) shared_ptr模拟实现 完整代码 循环引用 weak_ptr模拟实现 定制删除器 shared_ptr定制删除器模拟实现 内存泄漏 RAII RAII(Resource Acquisit…...
[数据集][VOC][目标检测]翻越栏杆翻越防护栏数据集目标检测可用yolo训练-1035张介绍
数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1035 标注数量(xml文件个数):1035 标注类别数:2 标注类别名称:["fylg","…...

深度学习 | BN层原理浅谈
深度学习 | BN层原理浅谈 文章目录深度学习 | BN层原理浅谈一. 背景二. BN层作用三. 计算原理四. 注意事项为什么BN层一般用在线性层和卷积层的后面,而不是放在激活函数后为什么BN能抑制过拟合(有争议)一. 背景 神经网络在训练时,由于内存限制࿰…...
每日面试题
2022/12/15 如何实现一个IOC容器 1、配置文件配置包扫描路径 2、递归包扫描获取.class文件 3、反射、确定需要交给lOC管理的类4、对需要注入的类进行依赖注入 配置文件中指定需要扫描的包路径 定义一些注解,分别表示访问控制层、业务服务层、数据持久层、依赖注…...

将IDEA的项目托管到gitee
目录1. 在gitee上创建仓库2. 本地创建仓库目录3. 将项目添加到缓冲区4. 将缓冲区的项目添加到本地仓库5. 将本地仓库的项目上传到gitee6. 遇到的问题6.1 问题描述6.2 解决方法7. 相关图示与补充8. 相关参考1. 在gitee上创建仓库 2. 本地创建仓库目录 在IDEA中选择创建 Git 仓…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...