当前位置: 首页 > 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、自动重启从站 待续........

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...