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

Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析

推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI

1.0 MyBatis 概述
MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 可以帮助我们将数据库操作抽象出来,使得我们的代码更加简洁、易读和易于维护。

2.0 数据库连接池
在实际的项目中,数据库连接是一个非常宝贵的资源。如果每次访问数据库都创建一个新的连接,那么将会导致性能下降和资源浪费。为了解决这个问题,我们可以使用数据库连接池。

2.1 数据库连接池的主要作用包括

  • 资源重用:连接池中可以维护一定数量的数据库连接,当需要访问数据库时,可以从连接池中获取一个连接,而不是创建一个新的连接,从而提高了资源的利用率。
  • 更快的响应时间:由于连接池中已经存在可用的连接,因此可以减少创建和销毁数据库连接的时间,从而提高了系统的响应速度。
  • 统一的管理:连接池可以对数据库连接进行统一的管理,包括连接的创建、释放、空闲时间等,从而避免了连接泄漏和资源浪费等问题。

2.2 如何切换数据库连接池?
在 Spring Boot 中,我们可以通过配置文件来切换数据库连接池。Spring Boot 支持多种数据库连接池,包括 HikariCP、Druid、C3P0 等。下面以 HikariCP 为例,介绍如何在 Spring Boot 中切换数据库连接池。

  • 在 pom.xml 文件中添加 HikariCP 的依赖:
<dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>${hikaricp.version}</version>
</dependency>
  • 在 application.properties 文件中配置 HikariCP:
# 数据源基本配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root# HikariCP 连接池配置
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.connection-timeout=30000

3.0 配置环境
在使用 MyBatis 之前,我们需要配置好相关的环境。下面以 MySQL 为例,介绍如何在 Spring Boot 中配置 MyBatis。

  • 在 pom.xml 文件中添加 MyBatis 和 MySQL 的依赖:
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java.version}</version>
</dependency>
  • 在 application.properties 文件中配置数据库连接信息:
# 数据源基本配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root# MyBatis 配置
mybatis.mapper-locations=classpath:mappers/*.xml

4.0 Lombok 工具包
Lombok 是一个非常实用的 Java 工具包,它可以通过注解的方式来简化 Java 代码的编写。Lombok 提供了一系列的注解,例如@Data、@ToString、@EqualsAndHashCode 等,可以自动生成 Java 类的 getter、setter、toString、equals 和 hashCode 等方法。

4.1 如何导入到项目中呢?
在 Spring Boot 项目中使用 Lombok,只需要在 pom.xml 文件中添加 Lombok 的依赖即可。

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version>
</dependency>

然后在需要使用 Lombok 的 Java 类上添加@Data、@ToString、@EqualsAndHashCode 等注解即可。

5.0 application 属性文件数据库连接的信息与 pom XML文件的依赖
在 Spring Boot 中,application.properties 文件用于配置应用程序的属性信息,包括数据库连接信息、日志级别、服务器端口等。pom.xml 文件用于配置项目的依赖信息,包括 MyBatis、Lombok 等。

在实际的项目开发中,我们需要根据项目的需求来配置 application.properties 文件和 pom.xml 文件。例如,如果我们需要使用 MySQL 数据库,那么我们需要在 application.properties 文件中配置数据库连接信息,在 pom.xml 文件中添加 MySQL 的依赖。如果我们需要使用 MyBatis 框架,那么我们需要在 pom.xml 文件中添加 MyBatis 的依赖,在 application.properties 文件中配置 MyBatis 的相关信息。

下面是一个示例的 application.properties 文件:

# 数据源基本配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root# MyBatis 配置
mybatis.mapper-locations=classpath:mappers/*.xml# 日志级别
logging.level.root=INFO

下面是一个示例的 pom.xml 文件:

<?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><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version><mybatis-spring-boot-starter.version>2.1.4</mybatis-spring-boot-starter.version><mysql-connector-java.version>8.0.26</mysql-connector-java.version><lombok.version>1.18.22</lombok.version></properties><dependencies><!-- Spring Boot 核心依赖 --><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!-- Mybatis 依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- Lombok 依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

以上就是关于 Spring Boot Web 篇-深入了解 MyBatis 概念、数据库连接池、环境配置和 Lombok 工具包的技术文章,希望对你有所帮助。

推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI

相关文章:

Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析

推荐一个AI网站&#xff0c;免费使用豆包AI模型&#xff0c;快去白嫖&#x1f449;海鲸AI 1.0 MyBatis 概述 MyBatis 是一个优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 可以帮助我们将数据库操作抽象出来&#xff0c;使得我们的代码更加简洁…...

【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录

目录 一、异步生成Actor示例 二、异步计算示例 参考视频 首先需要在商城中下载“Async Blueprints Extension”插件 一、异步生成Actor示例 2. 创建一个线程类&#xff0c;这里要指定父类为“LongAsyncTask”、“InfiniteAsyncTask”、“ShortAsyncTask”中的一个 在线程类…...

【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。

文章目录 问题概述1、在Jupyter中GPU运行true2、在pycharm中GPU运行false3、个人解决方案仅供参考 问题概述 在jupyter里运行torch.cuda.is_available()&#xff0c;显示True&#xff0c;在pycharm中运行却显示false。原因在于jupyter 运行环境和pycharm 运行环境不同&#xf…...

Flutter 中的 Scrollbar 小部件:全面指南

Flutter 中的 Scrollbar 小部件&#xff1a;全面指南 在Flutter中&#xff0c;滚动条&#xff08;Scrollbar&#xff09;是一种常见的UI组件&#xff0c;用于提供对滚动内容的快速访问和控制。Scrollbar 小部件可以附加到任何可滚动的widget上&#xff0c;如ListView、GridVie…...

【华为】将eNSP导入CRT,并解决不能敲Tab问题

华为】将eNSP导入CRT&#xff0c;并解决不能敲Tab问题 eNSP导入CRT打开eNSP&#xff0c;新建一个拓扑右键启动查看串口号关联CRT成功界面 SecureCRT连接华为模拟器ensp,Tab键不能补全问题选择Options&#xff08;选项&#xff09;-- Global Options &#xff08;全局选项&#…...

实验二 电子传输系统安全-进展2

上周任务完成情况&#xff08;代码链接&#xff0c;所写文档等&#xff09; 重新调通电子公文传输系统部署gmssl学习生成SM2证书学习gmssl中的CTLS实现将数据库从SqlServer迁移到Mysql调试Mysql驱动学习Bouncy Castle 代码链接 Mysql表设计 /* Navicat MySQL Data Transfer…...

JavaScript 获取 HTML 中特定父元素下的子元素

JavaScript 获取 HTML 中特定父元素下的子元素 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>查找子元素示例</title> </head> <body><div id"parent"><p&…...

等保服务是一次性服务吗?为什么?怎么理解?

我国等保政策已经严格落地执行&#xff0c;但还有不少企业对于等保服务不是很了解。例如有人问&#xff0c;等保服务是一次性服务吗&#xff1f;为什么&#xff1f;怎么理解&#xff1f;今天我们就来简单回答一下&#xff0c;仅供参考哈&#xff01; 等保服务是一次性服务吗&…...

全网首发UNIAPP功能多的iapp后台源码

全网首发UNIAPP功能多的iapp后台源码&#xff0c;众所周知UN Dev Assist 后台是一款既不免费又不好用的后台今天直接分享。 搭建教程在里面了&#xff0c;自己查看。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89291994 更多资源下载&#xff1a;…...

【搜索方法推荐】高效信息检索方法和实用网站推荐

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?

大家好&#xff0c;我是瑶琴呀。 面试被问到不懂的东西&#xff0c;是直接说不懂还是坚持狡辩一下&#xff1f;这个问题可以转变一下&#xff0c;如果你顺利拿到 offer&#xff0c;公司安排的工作跟你之前的技术和经验不匹配&#xff0c;你还愿意干下去吗&#xff1f; 转变一…...

Flutter 中的 StatefulBuilder 小部件:全面指南

Flutter 中的 StatefulBuilder 小部件&#xff1a;全面指南 在Flutter中&#xff0c;StatefulBuilder是一个高效的小部件&#xff0c;它根据给定的构建函数来构建widget&#xff0c;并在组件树中只对需要重新构建的部分进行更新。这使得它在性能优化方面非常有用&#xff0c;特…...

mail发送接口API如何使用?怎么调用接口?

mail发送接口API的性能怎么样&#xff1f;邮件接口发信的技巧&#xff1f; 为了自动化和集成电子邮件功能到应用程序或系统中&#xff0c;开发人员可以使用各种邮件发送接口API。AokSend将介绍如何使用这些API来发送电子邮件&#xff0c;提高效率和灵活性。 mail发送接口API&…...

DOS学习-目录与文件应用操作经典案例-attrib

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统中的attrib命令是一个用于显示或更改文件&#…...

STP简介

一、STP介绍 STP 即生成树协议&#xff08;Spanning Tree Protocol&#xff09;一种网络协议 STP 主要用于解决以太网中的环路问题。在具有冗余链路的网络环境中&#xff0c;环路可能导致广播风暴、重复帧等不良后果&#xff0c;严重影响网络性能和稳定性。STP 通过在交换机之…...

java调用科大讯飞在线语音合成API --内附完整项目

科大讯飞语音开放平台基础环境搭建 1.用户注册 注册科大讯飞开放平台账号 2.注册好后先创建一个自己的应用 创建完成后进入应用可以看到我们开发需要的三个参数&#xff1a;APPID&#xff0c;APISecret&#xff0c;APIKey 3.因为平台提供的SDK中只支持了简单的中英两种语言语音…...

Vuex 页面刷新数据丢失怎么解决

当Vuex中的数据在页面刷新后丢失时&#xff0c;这通常是因为Vuex的状态数据是保存在运行内存中的&#xff0c;页面刷新会导致Vue实例重新加载&#xff0c;进而Vuex中的数据被重置为初始状态。为了解决这个问题&#xff0c;可以采取以下几种方法&#xff1a; 1. 使用浏览器的本…...

如何使用Cloudways搭建WordPress网站

如今&#xff0c;搭建网站已经变得非常简单&#xff0c;这主要得益于开源的CMS建站系统的兴起。即使是不懂编程的人也能轻松搭建自己的网站&#xff0c;这些CMS系统提供了丰富的主题模板和插件&#xff0c;使用户可以通过简单的拖放和配置操作来建立自己的网站。 WordPress是目…...

Lora理解

Parameter-Efficient Fine-Tuning (PEFT) &#xff1a;节约开销的做法&#xff0c;fine-tune少量参数&#xff0c;而不是整个模型&#xff1b; Low-Rank Adaptation (LoRA) &#xff1a;是PEFT的一种&#xff1b;冻结原参数矩阵&#xff0c;只更新2个小参数矩阵。...

EtherCAT总线掉线如何自动重启

EtherCAT通信如果是从站掉线我们可以勾选上自动重启功能如下图所示&#xff1a; 1、自动重启从站 待续........

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...