从零开始创建一个项目,springBoot+mybatisPlus+mysql+swagger+maven
一,前提
从零开始创建一个项目,绑定了数据库
用到的技术栈:springBoot+mybatisPlus+mysql+swagger+maven
二,创建项目步骤
1,创建项目
创建出来的项目结构如图所示
2,修改配置文件
因为我比较习惯yml语言,这里我就使用yml
application.yml配置如下:
spring:datasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: ****driver-class-name: com.mysql.jdbc.Driverthymeleaf:prefix: classpath:/template/ #所有的动态页面打包后的位置suffix: .html #添加后缀# mybatis-plus相关配置
mybatis-plus:# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)mapper-locations: classpath:mapper/*.xml# 以下配置均有默认值,可以不设置global-config:db-config:#主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";id-type: auto#字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"field-strategy: NOT_EMPTY#数据库类型db-type: MYSQLconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段call-setters-on-nulls: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3,引入相关依赖
在这个环节中,我多次启动失败都是因为版本太高,所以下面的依赖是我调整完之后,
可以正常启动的依赖配置。
<?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.6.1</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>projectA</artifactId><version>0.0.1-SNAPSHOT</version><name>projectA</name><description>projectA</description><!-- jdk配置信息,最好加上,因为如果不加上,每次我启动一次项目,项目的jdk版本就变成19,然后一直报错,这个地方永久配置jdk--><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatisPlus 核心库 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0</version></dependency><!-- druid依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.0</version></dependency><!-- swagger依赖 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><!-- mysql依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!-- lombok依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build</project>
4,准备表数据
这里我准备了四张表
CREATE TABLE `student` (`student_no` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '学号',`name` varchar(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '姓名',`sex` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '性别',`birthday` date DEFAULT NULL COMMENT '出生日期',`stu_class` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '班级',PRIMARY KEY (`student_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('101', '李军', '男', '1976-02-20', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('103', '陆君', '男', '1974-06-03', '95031');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('105', '匡明', '男', '1975-10-02', '95031');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('107', '王丽', '女', '1976-01-23', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('108', '曾华', '男', '1977-09-01', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('109', '王芳', '女', '1975-02-10', '95031');
CREATE TABLE `score` (`student_no` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '学号',`course_no` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '课程编号',`score` decimal(4,1) DEFAULT NULL COMMENT '分数',PRIMARY KEY (`student_no`,`course_no`),KEY `Cno` (`course_no`),CONSTRAINT `Score_ibfk_1` FOREIGN KEY (`student_no`) REFERENCES `student` (`student_no`),CONSTRAINT `Score_ibfk_2` FOREIGN KEY (`course_no`) REFERENCES `course` (`course_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;INSERT INTO test.score
(student_no, course_no, score)
VALUES('101', '3-105', 64.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('101', '6-166', 85.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('103', '3-105', 92.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('103', '3-245', 86.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('105', '3-105', 88.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('105', '3-245', 75.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('107', '3-105', 91.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('107', '6-166', 79.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('108', '3-105', 78.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('108', '6-166', 81.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('109', '3-105', 76.0);
INSERT INTO test.score
(student_no, course_no, score)
VALUES('109', '3-245', 68.0);
CREATE TABLE `student` (`student_no` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '学号',`name` varchar(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '姓名',`sex` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '性别',`birthday` date DEFAULT NULL COMMENT '出生日期',`stu_class` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '班级',PRIMARY KEY (`student_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('101', '李军', '男', '1976-02-20', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('103', '陆君', '男', '1974-06-03', '95031');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('105', '匡明', '男', '1975-10-02', '95031');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('107', '王丽', '女', '1976-01-23', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('108', '曾华', '男', '1977-09-01', '95033');
INSERT INTO test.student
(student_no, name, sex, birthday, stu_class)
VALUES('109', '王芳', '女', '1975-02-10', '95031');
CREATE TABLE `teacher` (`teacher_no` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`name` varchar(4) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`sex` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`birthday` date DEFAULT NULL,`title` varchar(6) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,`depart` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,PRIMARY KEY (`teacher_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;INSERT INTO test.teacher
(teacher_no, name, sex, birthday, title, depart)
VALUES('804', '李诚', '男', '1958-12-02', '副教授', '计算机系');
INSERT INTO test.teacher
(teacher_no, name, sex, birthday, title, depart)
VALUES('825', '王萍', '女', '1972-05-05', '助教', '计算机系');
INSERT INTO test.teacher
(teacher_no, name, sex, birthday, title, depart)
VALUES('831', '刘冰', '女', '1977-08-14', '助教', '电子工程系');
INSERT INTO test.teacher
(teacher_no, name, sex, birthday, title, depart)
VALUES('856', '张旭', '男', '1969-03-12', '讲师', '电子工程系');
5,创建相关类
这里我推荐一个好用的插件mybatisX,可以自动创建相关类,很省事
先连接好数据库,刷新表
配置生成的类基本信息
都给我生成好了
6,相关注解添加
启动类处理一下
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class ProjectApplication {public static void main(String[] args) {try {SpringApplication.run(ProjectApplication.class, args);} catch (Exception e) {e.printStackTrace();}}
}
其他注解添加
7,项目可以安全启动了
8,其他文章
永久解决 Intellij idea 报错:Error : java 不支持发行版本5
Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法
SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)
SpringBoot集成swagger2报错‘apiDocumentationScanner‘ defined in URL
SpringBoot 整合MyBatisPlus
Error creating bean with name ‘**ServiceImpl‘: Unsatisfied dependency expressed through field ‘baseM
IDEA设置自动导入包
下班咯,还待完善,敬请期待。。。
相关文章:
从零开始创建一个项目,springBoot+mybatisPlus+mysql+swagger+maven
一,前提 从零开始创建一个项目,绑定了数据库 用到的技术栈:springBootmybatisPlusmysqlswaggermaven 二,创建项目步骤 1,创建项目 创建出来的项目结构如图所示 2,修改配置文件 因为我比较习惯yml语言&…...
【视点合成】代码解读:生成demo视频
变换工具 def render_3dphoto(src_imgs, # 输入的源图像,维度为 [batch_size, 3, height, width]mpi_all_src, # 输入的所有源图像的MPI,维度为 [batch_size, num_planes, 4, height, width]disparity_all_src, # 所有源图像的视差信息&…...
Process On在线绘制流程图
目录 一.ProcessOn 1.1.介绍 1.2.直接网上使用 二.绘制门诊流程图 三.绘制住院流程图 四.绘制药库采购入库流程图 五.绘制OA会议流程图 今天就到这里了哦!!!希望能帮到你哦!!! 一.ProcessOn 1.1.介绍 ProcessOn(流程&#…...
【Hadoop-OBS-Hive】利用华为云存储对象 OBS 作为两个集群的中间栈 load 文件到 Hive
【Hadoop-OBS-Hive】利用华为云存储对象 OBS 作为两个集群的中间栈 load 文件到 Hive 1)压缩文件2)上传文件到 OBS 存储对象3)crontab 定时压缩上传4)从 obs 上拉取下来文件后解压缩5)判断对应文件是否存在6࿰…...
直线检测算子
hough_lines_dir 接口 hough_lines_dir(ImageDir : HoughImage, Lines : DirectionUncertainty, AngleResolution, Smoothing, FilterSize, Threshold, AngleGap, DistGap, GenLines : Angle, Dist) 参数 in: ImageDir :由边缘检测算子sobel_dir、edge_image获取的…...
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…...
逛商场。。。
题目名字 逛商场 题意 见到想买的物品,只要能买得起,就一定会买下来之后才会继续往前走;如果买不起就直接跳过 思路 接着,它读取数组 aa 的值,并存储在数组中。然后,程序读取一个整数 m。初始化计数器 cn…...
RTrPPG
研究背景 心率 (HR) 和脉搏率变异性 (PRV) 是允许分析心脏行为的两个生理参数。心率监测可以通过接触式和非接触式的两种方法进行。通常用于测量 HR 和 PRV 的两种接触式技术是心电图 (ECG) 和光电容积脉搏波 (PPG)。 ECG 测量由心脏活动引起的电场。另一方面,PPG …...
web应用开发技术的一些概念
一、Servlet 1.Servlet的工作过程: Servelt的工作流程示意图 (1)客户端发起一个Http请求到服务器,请求特定的资源或者是要执行特定的操作 (2)服务器在接收到请求后,根据请求相应的URL将请求分发…...
智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于乌燕鸥算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌燕鸥算法4.实验参数设定5.算法结果6.参考文…...
超聚变服务器(原华为服务器)网站模拟器
一、超聚变服务器(原华为服务器)网站模拟器: 原来了解服务器可以从他的网站上进行了解,模拟器做的很好了。 https://support.xfusion.com/server-simulators/ 有很多的模拟器,今天主要看下BMC的设置 有很多的在线工具…...
Linux常见压缩指令小结
为什么需要压缩技术 我们都知道文件是以byte作为单位的,如果我们的文件仅仅在低位占一个1 0000 0001这种情况我们完全可以压缩一下,将高位的0全部抹掉即可。 如上所说是一种压缩技术,还有一种就是将1111(此处省略96个)一共100个1࿰…...
OpenSSL的源码在哪里下载?
官方网站去下载,网址: https://www.openssl.org/source/ 比较老的版本的下载页面地址: https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下: --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…...
使用create-react-app脚手架创建react项目
文章目录 1、安装create-react-app脚手架2、创建 React 项目,项目名为 react-demo3、项目创建成功4、使用vscode打开项目并运行5、项目运行成功node_modules:存放项目所依赖的一些第三方包文件public:静态资源文件夹src:源码文件夹其它文件 1…...
【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
🌈个人主页:Sarapines Programmer🔥 系列专栏:《网络安全之道 | 数字征程》⏰墨香寄清辞:千里传信如电光,密码奥妙似仙方。 挑战黑暗剑拔弩张,网络战场誓守长。 目录 😈1. 初识…...
JVM基础扫盲
什么是JVM JVM是Java设计者用于屏蔽多平台差异,基于操作系统之上的一个"小型虚拟机",正是因为JVM的存在,使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次,在任何操作系统都可以以相…...
SpringBoot基于gRPC进行RPC调用
SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC?1.2 如何编写proto1.3 数据类型及对应关系1.4 枚举1.5 数组1.6 map类型1.7 嵌套对象 二、SpringBoot gRPC2.1 工程目录2.2 jrpc-api2.2.1 引入gRPC依赖2.2.2 编写 .proto 文件2.2.3 使用插件机制生产proto相关…...
浏览器的事件循环机制(Event loop)
事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? …...
THEMIS---Beta Sprint Summary Essay Blog
Which course does this assignment belong to2301-MUSE社区-CSDN社区云What are the requirements for this assignmentbeta SprintThe goal of this assignmentTo summarize the beta task progress and the teams sprintsTeam NameThemisTop-of-the-line collection of essa…...
Vue中实现分布式动态路由的基本实现步骤介绍
设想一下,我们在做一个体量非常大的项目,这个项目有很多的模块和相当多的页面。当我们想修改一个路由的时候,我们打开了router文件夹下的index.js文件时,一串长到鼠标滚轮需要滚大半天才滚到底的路由简直让人头皮发麻。 在开始之前…...
【Leetcode】计算器
思路 用栈来完成; 考虑到运算关系,先乘除后加减;此外,一般计算式首个数字式正数;判断字符是否为数字,str.isdigit()字符转数字:ord(str) - ord(‘0’)遇到加减符,压栈数字…...
巧妙的使用WPF中的资源
其实,在wpf中,最核心的就是xaml,因为只有xaml,才能体现出用的是wpf,而不是普通的cs文件,cs文件在winform中等等程序都可以使用的,唯独xaml才是wpf中最重要的,最精华的东西࿰…...
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…...
【AIGC重塑教育】AI大模型驱动的教育变革与实践
文章目录 🍔现状🛸解决方法✨为什么要使用ai🎆彩蛋 🍔现状 AI正迅猛地改变着我们的生活。根据高盛发布的一份报告,AI有可能取代3亿个全职工作岗位,影响全球18%的工作岗位。在欧美,或许四分之一…...
【力扣100】2.两数相加
添加链接描述 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Op…...
算法leetcode|93. 复原 IP 地址(多语言实现)
文章目录 93. 复原 IP 地址:样例 1:样例 2:样例 3:提示: 分析:题解:rust:go:c:python:java: 93. 复原 IP 地址: 有效 IP …...
TOGAF—架构(Architecture)项目管理
一、简介 1.1概述 架构(Architecture)项目在本质上通常是复杂的。他们需要适当的项目管理来保持正轨并兑现承诺。本指南适用于负责规划和管理架构(Architecture)项目的人员。我们解释了如何用事实上的方法和标准(如PRINCE2或PMBOK)来补充TOGAF架构开发方法(ADM),以加…...
MVVM前端设计模式的发展与应用
在MVC模式中,随着代码量越来越大,主要用来处理各种逻辑和数据转化的Controller首当其冲,变得非常庞大,MVC的简写变成了Massive-View-Controller(意为沉重的Controller) 我曾经接手老项目,sprin…...
redis:二、缓存击穿的定义、解决方案(互斥锁、逻辑过期)的优缺点和适用场景、面试回答模板和缓存雪崩
缓存击穿的定义 缓存击穿是一种现象,具体就是某一个数据过期时,恰好有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮。典型场景就是双十一等抢购活动中,首页广告页面的数据过期,此时刚好大量用户进行请求&…...
php的Url 安全的base64编码解码类
/*** Url安全的Base64编码方法* author JerryLi* version 20231217*/ final class UrlSafeB64Fun{/*** 编码* param string $sData 原始字符串* return string*/static public function encode(string $sData): string{$aTmp base64_encode($sData);return strtr($aTmp, [>…...
舟山城乡建设部网站首页/seo推广工具
游戏效果 源码 # -*- coding:utf-8 -*-#导入系统文件库 import pygame import random from pygame.locals import * from random import randint#定义一些窗体参数及加载字体文件 SCREEN_WIDTH 900 # 窗体宽度 SCREEN_HEIGHT 600 # 窗体宽度 LOW_SPEED 4…...
线下广告宣传方式有哪些/网店seo是什么意思
--select * from dba_users; 查询数据库中的所有用户--alter user TEST_SELECT account lock; 锁住用户--alter user TEST_SELECT account unlock; 给用户解锁--create user xujin identified by xujin; 建立用户--grant create tablespace to xujin; 授权--grant select on …...
兰州交通发展建设集团公司网站/潍坊在线制作网站
网络协议的三要素:1、语义是解释控制信息每个部分的意义;2、语法是用户数据与控制信息的结构与格式,以及数据出现的顺序;3、时序是对事件发生顺序的详细说明。本文操作环境:windows10系统、thinkpad t480电脑。网络协议…...
继续浏览此网站(不推荐)/市场调研报告1500字
1.bindtextdomain()参考:man 3 bindtextdomain,功能是:设置包含 LC_MESSAGES 分类 (catalog) 的locale 目录,程序的 .mo 文件就保存到其下的目录中。LC_MESSAGES 是 locale 的一个分类(catalog),和其它的分类ÿ…...
如何清空网站空间/长沙靠谱seo优化价格
Q500E(和其它高通项目)已经陆续有客户进来,连同我们自己的推广样机,代码管理和软件发布容易混乱,目前我们可以先按如下方法试运行。1. 一个项目一个版本库。如:Q500E的版本库为: gitolite:MSM8926.LA.1.1-CS使用如下命…...
看视频的软件哪个最好免费/洛阳网站建设优化
从下面的两张图可以看出,打印页面上的元素与打印预览上的元素产生的偏移。可以看出,产生偏移的元素都是绝对定位的,并且指定了left.解决办法:将left改成right就可以了。改成right有后遗证,计算left相对而言比较简单&am…...