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

【java】速度搭建一个springboot项目

使用软件:IDEA,mysql
使用框架:springboot + mybatis-plus + druid

坑点

  • 使用IDEA搭建一个springboot项目的时候,需要考虑一下IDEA版本支持的JDK版本以及maven版本。否则再构建项目,引入pom的时候就会报错。

需要检查的东西:

  1. 检查使用的JDK
  2. 检查项目设置的maven路径,设置文档以及使用的repo路径。
  3. 检查文本编辑的编码方式

检查编码方式:
在这里插入图片描述

构建过程

  1. 新建一个project
  2. 修改pom.xml
  3. 编写yaml文件
  4. 在数据库建表
  5. 使用MP直接生成各个包
  6. 编写业务代码

spring boot

spring boot 需要导入的pom

parent必须写,然后选择自己所需要的版本,一般去官网看就好了,目前springboot 3 与2差别比较大。
完了下面在property里面自己使用的 JDK版本。

然后最关键需要引入starter-web。这才是真正引入东西。但是不需要写版本。因为maven继承机制,在父类POM里面规定了里面所使用的版本,所以如果在parent声明过版本,子类就只需要写groupId以及artifactId就好了。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version></parent><properties><java.version>14</java.version></properties><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

spring boot 单元测试

首先需要引入的依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

然后在test之下写java类
需要注意的是使用SpringBootTest注解里面需要加上springboot入口的字节码文件

e.g.

@SpringBootTest(classes = Main.class)
public class SimpleTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testSelect() {System.out.println(("----- selectAll method test ------"));List<User> userList = userMapper.selectList(null);Assert.isTrue(5 == userList.size(), "");userList.forEach(System.out::println);}}

mysql连接 + druid

  1. 引入pom
  2. 编写yaml

pom.xml

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version></dependency><!--        # mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency>

appication.yaml

spring:application:name: gamble-web			# web名称,后面spring cloud所使用的区分服务的名称datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=trueusername: rootpassword: root

如果使用mysql5的话,pom与yaml配置如下

# mysql8.0---JDBC四件套
jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
jdbc.user = root
jdbc.password =123456# Maven的POM
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version>
</dependency>

mybatis-plus

然后进行数据库进行建表,建完表之后,直接用MP自动生成代码就行。

pom.xml


<!--        mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version></dependency><!--生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.6</version></dependency><!--        生成引擎--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency>

编写CodeGenerator类与主启动类在一致位置.
里面的url username password将上面yaml配置连接数据库的保持一致就行。
运行一下就能够得到controller service mapper了。
后面编写业务就行了。


public class CodeGenerator {public static void main(String[] args) {FastAutoGenerator.create("url","username", "password").globalConfig(builder -> builder.author("abanban").outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/java").commentDate("yyyy-MM-dd")).packageConfig(builder -> builder.parent("com.abanban.gamble").entity("entity").mapper("mapper").service("service").serviceImpl("service.impl").xml("mapper.xml")).strategyConfig(builder -> builder.entityBuilder().enableLombok()).templateEngine(new FreemarkerTemplateEngine()).execute();}
}

总结

pom.xml

<!--注意:打包到Linux服务器上运行时,必须打成jar包,不要war包,因为里面有Tomcat等,会冲突<packaging>jar</packaging>-->
<!--    <packaging>war</packaging>--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version></parent><properties><java.version>14</java.version></properties><dependencies><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>
<!--        mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version></dependency><!--        <dependency>-->
<!--            <groupId>com.baomidou</groupId>-->
<!--            <artifactId>mybatis-plus</artifactId>-->
<!--            <version>3.5.6</version>-->
<!--        </dependency>--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version></dependency><!--        # Maven的POM--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency>
<!--生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.6</version></dependency><!--        生成引擎--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter</artifactId>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-web</artifactId>-->
<!--            <scope>compile</scope>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.baomidou</groupId>-->
<!--            <artifactId>mybatis-plus-boot-starter</artifactId>-->
<!--            <version>3.4.2</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.projectlombok</groupId>-->
<!--            <artifactId>lombok</artifactId>-->
<!--            <version>1.18.20</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>fastjson</artifactId>-->
<!--            <version>1.2.76</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>commons-lang</groupId>-->
<!--            <artifactId>commons-lang</artifactId>-->
<!--            <version>2.6</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>mysql</groupId>-->
<!--            <artifactId>mysql-connector-java</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>druid-spring-boot-starter</artifactId>-->
<!--            <version>1.1.23</version>-->
<!--        </dependency>--><!--        &lt;!&ndash; 邮件服务 &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-mail</artifactId>-->
<!--        </dependency>-->
<!--        &lt;!&ndash; Thymeleaf 模版,用于发送模版邮件 &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!--        </dependency>--></dependencies><!--    <build>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--                <version>2.4.5</version>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>--><!-- 最后打包成jar包需要使用的spring插件--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

yaml


server:port: 8080# ==========applicationName + druid-mysql8 driver===================
spring:application:name: gamble-webdatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=trueusername: rootpassword: root

部署

刚才pom最下面插件写了之后,直接运行一下mvn package命令就可以打包成一个jar包了。
然后丢到服务器上面java -jar 运行一下就可以了

相关文章:

【java】速度搭建一个springboot项目

使用软件&#xff1a;IDEA&#xff0c;mysql 使用框架&#xff1a;springboot mybatis-plus druid 坑点 使用IDEA搭建一个springboot项目的时候&#xff0c;需要考虑一下IDEA版本支持的JDK版本以及maven版本。否则再构建项目&#xff0c;引入pom的时候就会报错。 需要检查…...

SystemVerilog测试框架示例

这里是一个完整的SystemVerilog测试框架示例&#xff0c;包括随机化测试和详细注释。 顶层模块 (Top Module) module top;// 信号声明logic clk;logic rst_n;// 接口实例化dut_if dut_if_inst(.clk(clk), .rst_n(rst_n));// DUT实例化 (假设DUT模块名为dut)dut u_dut(.clk(du…...

每天一个数据分析题(三百五十六)-图表决策树

图表决策树中将图表分成四类&#xff0c;分别是&#xff1f; A. 比较类 B. 序列类 C. 构成类 D. 描述类 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案...

Prism 入门06,发布订阅(入门完结)

本章节介绍使用 Prism 框架的消息聚合器 IEventAggregator ,实现如何进行消息发布,订阅,取消订阅的功能 继续使用上一章节使用的 Prism WPF 空模板项目 BlankApp1 1.首先,在使用 Prism 框架当中,进行事件消息的发布和订阅之前,需要定义发布事件的事件消息模型。如下所示:…...

2. pytorch环境安装

概述 ​ 本文提供基于Anaconda环境Windows11操作系统的Pytorch深度学习环境的配置。深度学习环境分为GPU和CPU两大部分。使用GPU进行环境配置&#xff0c;需要保证电脑配有独立显卡&#xff0c;并且显卡驱动安装正常&#xff0c;详情见前文。 1. 创建新的虚拟环境用来配置Pyt…...

力扣爆刷第148天之贪心算法五连刷(区间合并)

力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09; 文章目录 力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09;一、406. 根据身高重建队列二、452. 用最少数量的箭引爆气球三、435. 无重叠区间四、763. 划分字母区间五、56. 合并区间六、738.…...

JSON及Python操作JSON相关

JSON及Python操作JSON相关 Json简介及Python操作Json相关示例。 1. JSON概念及支持的数据类型 1.1 什么是 JSON&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解…...

[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月8日14点23分 &#x1f004;️文章质量&#xff1a;94分 前言—— 在现代通信网络中&#xff0c;传输介质是数据传…...

Android 高德地图API(新版)

新版高德地图 前言正文一、创建应用① 获取PackageName② 获取调试版安全码SHA1③ 获取发布版安全码SHA1 二、配置项目① 导入SDK② 配置AndroidManifest.xml 三、获取当前定位信息① ViewBinding使用和导包② 隐私合规设置③ 权限请求④ 初始化定位⑤ 获取定位信息 四、显示地…...

LeetCode---二叉树

144/94/145. 二叉树的前、中、后序的递归遍历 以中序遍历为例&#xff0c;其余类似&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 代码示例&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr…...

从0开发一个Chrome插件:核心功能开发——弹出页面

前言 这是《从0开发一个Chrome插件》系列的第十一篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必…...

AIGC笔记--Stable Diffusion源码剖析之UNetModel

1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例&#xff0c;剖析Stable Diffusion经典组成部分&#xff0c;巩固学习加深印象。 2--UNetModel 一个可以debug的小demo&#xff1a;SD_UNet​​​​​​​ 以文生图为例&#…...

Linux文件系统与日志分析

目录 inode block 链接 文件修复 实验步骤 针对ext文件系统恢复删除文件 针对xfs文件系统恢复删除文件 日志 日志级别 rsyslogd服务 日志目录 messages日志文件&#xff08;系统日志&#xff09; 集中管理日志 - 实验 1.环境配置 1.1 1.2 1.3 1.4 1.5 2.远…...

【SkyWalking】使用PostgreSQL做存储K8s部署

拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…...

详解大模型微调数据集构建方法(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法t研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算…...

自制植物大战僵尸:HTML5与JavaScript实现的简单游戏

引言 在本文中&#xff0c;我们将一起探索如何使用HTML5和JavaScript来创建一个简单的植物大战僵尸游戏。这不仅是一项有趣的编程挑战&#xff0c;也是学习游戏开发基础的绝佳机会。 什么是植物大战僵尸&#xff1f; 植物大战僵尸是一款流行的策略塔防游戏&#xff0c;玩家需…...

Istio_1.17.8安装

项目背景 按照istio官网的命令一路安装下来&#xff0c;安装好的istio版本为目前的最新版本&#xff0c;1.22.0。而我的k8s集群的版本并不支持istio_1.22的版本&#xff0c;导致ingress-gate网关安装不上&#xff0c;再仔细查看istio的发布文档&#xff0c;如果用istio_1.22版本…...

[数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;761 标注数量(xml文件个数)&#xff1a;761 标注数量(txt文件个数)&#xff1a;761 标注类别…...

17_Vue高级监听器生命周期Vue组件组件通信

文章目录 1. 数据监听器watch2. Vue生命周期3. Vue组件4. Vue组件通信Appendix 1. 数据监听器watch 首先watch需要单独引 import {watch} from vuewatch函数监听ref响应式数据 watch(监听的内容&#xff0c;监听行为)监听行为默认为(newValue,oldValue) let firstname ref…...

【ROS使用记录】—— ros使用过程中的rosbag录制播放和ros话题信息相关的指令与操作记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、rosbag的介绍二、rosbag的在线和离线录制三、rosbag的播放相关的指令四、其他rosbag和ros话题相关的指令总结 前言 rosbag是ROS&#xff08;机器人操作系统…...

Llama-3.2V-11B-cot企业级落地:保险定损图片自动归因与责任链推理

Llama-3.2V-11B-cot企业级落地&#xff1a;保险定损图片自动归因与责任链推理 想象一下&#xff0c;你是一名保险公司的定损员。每天&#xff0c;你的邮箱里塞满了上百张事故现场照片——撞瘪的车头、破碎的挡风玻璃、划痕累累的车门。你需要从这些照片里&#xff0c;像侦探一…...

Qt图形视图框架性能调优指南:从QGraphicsScene的ItemIndexMethod到视图更新策略

Qt图形视图框架性能调优实战&#xff1a;从索引算法到渲染优化 在开发CAD设计工具或地理信息系统时&#xff0c;我们团队曾遇到一个棘手问题&#xff1a;当场景中的图元数量超过5000个时&#xff0c;平移视图会出现明显的卡顿。通过系统性的性能分析&#xff0c;我们发现90%的C…...

数字丛林的领地宣言:信息素如何重构机房安全逻辑

在恒温23℃、湿度40%的密闭机房中&#xff0c;服务器嗡鸣与人体代谢正上演一场无声战争。当测试工程师在敏捷冲刺期连续奋战12小时&#xff0c;汗腺分泌的化学物质与臭氧反应形成独特“技术印记”——这不仅是生物学上的领地标记&#xff0c;更是机房安全管理的新隐喻。一、信息…...

OpenClaw浏览器自动化:Qwen3-32B-Chat实现智能爬虫与数据分析

OpenClaw浏览器自动化&#xff1a;Qwen3-32B-Chat实现智能爬虫与数据分析 1. 为什么需要智能化的浏览器自动化&#xff1f; 上个月我需要收集某个垂直领域的行业报告&#xff0c;手动复制粘贴了十几个网页后&#xff0c;突然意识到&#xff1a;这种重复劳动不正是AI该解决的问…...

保姆级教程:Langchain框架详解 - 大模型开发者的必备技能

什么是Langchain Langchain是一款提供给用户与大模型之间快捷沟通的代理框架&#xff0c;其核心设计思想就是整合各大模型厂商的接口&#xff0c;给用户提供一个快捷入口能快速实现自己的agent。 核心组件 •agent&#xff1a;Langchain的核心部分&#xff0c;所有的操作都围…...

CLIP-GmP-ViT-L-14开发者案例:基于CLIP-GmP-ViT-L-14构建私有图文检索原型系统

CLIP-GmP-ViT-L-14开发者案例&#xff1a;基于CLIP-GmP-ViT-L-14构建私有图文检索原型系统 1. 引言&#xff1a;从想法到原型&#xff0c;一个下午就够了 你有没有遇到过这样的场景&#xff1f;手头有一堆产品图片&#xff0c;需要快速找到哪张图对应“一个穿着红色衣服的人在…...

Simulink低通滤波器实战:从随机信号生成到参数调优(附完整模型)

Simulink低通滤波器实战&#xff1a;从随机信号生成到参数调优&#xff08;附完整模型&#xff09; 在嵌入式系统和自动化工程领域&#xff0c;信号处理的质量往往直接决定整个系统的稳定性。想象一下&#xff0c;当你从传感器获取的实时数据充满噪声和毛刺时&#xff0c;如何确…...

域适应实战:如何用Python快速实现图像风格迁移(附代码)

域适应实战&#xff1a;Python实现图像风格迁移的工程化解决方案 当你在巴黎街头用手机拍摄埃菲尔铁塔时&#xff0c;是否想过让它瞬间拥有梵高《星月夜》的笔触质感&#xff1f;这种看似魔法的技术背后&#xff0c;是域适应技术在计算机视觉领域的精妙应用。不同于简单的滤镜叠…...

RevokeMsgPatcher:PC端即时通讯工具消息控制解决方案

RevokeMsgPatcher&#xff1a;PC端即时通讯工具消息控制解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com…...

Materials Studio8.0在CentOS7.9环境下的安装与配置指南

1. 环境准备与系统检查 在CentOS 7.9上安装Materials Studio 8.0之前&#xff0c;我们需要确保系统环境满足最低要求。我遇到过不少因为环境配置不当导致的安装失败案例&#xff0c;这里分享几个关键检查点&#xff1a; 首先检查主机名是否包含特殊字符。Materials Studio对主机…...