搭建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 仓…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
