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网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 1.0 MyBatis 概述 MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 可以帮助我们将数据库操作抽象出来,使得我们的代码更加简洁…...
【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录
目录 一、异步生成Actor示例 二、异步计算示例 参考视频 首先需要在商城中下载“Async Blueprints Extension”插件 一、异步生成Actor示例 2. 创建一个线程类,这里要指定父类为“LongAsyncTask”、“InfiniteAsyncTask”、“ShortAsyncTask”中的一个 在线程类…...
【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。
文章目录 问题概述1、在Jupyter中GPU运行true2、在pycharm中GPU运行false3、个人解决方案仅供参考 问题概述 在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。原因在于jupyter 运行环境和pycharm 运行环境不同…...
Flutter 中的 Scrollbar 小部件:全面指南
Flutter 中的 Scrollbar 小部件:全面指南 在Flutter中,滚动条(Scrollbar)是一种常见的UI组件,用于提供对滚动内容的快速访问和控制。Scrollbar 小部件可以附加到任何可滚动的widget上,如ListView、GridVie…...
【华为】将eNSP导入CRT,并解决不能敲Tab问题
华为】将eNSP导入CRT,并解决不能敲Tab问题 eNSP导入CRT打开eNSP,新建一个拓扑右键启动查看串口号关联CRT成功界面 SecureCRT连接华为模拟器ensp,Tab键不能补全问题选择Options(选项)-- Global Options (全局选项&#…...
实验二 电子传输系统安全-进展2
上周任务完成情况(代码链接,所写文档等) 重新调通电子公文传输系统部署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&…...
等保服务是一次性服务吗?为什么?怎么理解?
我国等保政策已经严格落地执行,但还有不少企业对于等保服务不是很了解。例如有人问,等保服务是一次性服务吗?为什么?怎么理解?今天我们就来简单回答一下,仅供参考哈! 等保服务是一次性服务吗&…...
全网首发UNIAPP功能多的iapp后台源码
全网首发UNIAPP功能多的iapp后台源码,众所周知UN Dev Assist 后台是一款既不免费又不好用的后台今天直接分享。 搭建教程在里面了,自己查看。 源码下载:https://download.csdn.net/download/m0_66047725/89291994 更多资源下载:…...
【搜索方法推荐】高效信息检索方法和实用网站推荐
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?
大家好,我是瑶琴呀。 面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?这个问题可以转变一下,如果你顺利拿到 offer,公司安排的工作跟你之前的技术和经验不匹配,你还愿意干下去吗? 转变一…...
Flutter 中的 StatefulBuilder 小部件:全面指南
Flutter 中的 StatefulBuilder 小部件:全面指南 在Flutter中,StatefulBuilder是一个高效的小部件,它根据给定的构建函数来构建widget,并在组件树中只对需要重新构建的部分进行更新。这使得它在性能优化方面非常有用,特…...
mail发送接口API如何使用?怎么调用接口?
mail发送接口API的性能怎么样?邮件接口发信的技巧? 为了自动化和集成电子邮件功能到应用程序或系统中,开发人员可以使用各种邮件发送接口API。AokSend将介绍如何使用这些API来发送电子邮件,提高效率和灵活性。 mail发送接口API&…...
DOS学习-目录与文件应用操作经典案例-attrib
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统中的attrib命令是一个用于显示或更改文件&#…...
STP简介
一、STP介绍 STP 即生成树协议(Spanning Tree Protocol)一种网络协议 STP 主要用于解决以太网中的环路问题。在具有冗余链路的网络环境中,环路可能导致广播风暴、重复帧等不良后果,严重影响网络性能和稳定性。STP 通过在交换机之…...
java调用科大讯飞在线语音合成API --内附完整项目
科大讯飞语音开放平台基础环境搭建 1.用户注册 注册科大讯飞开放平台账号 2.注册好后先创建一个自己的应用 创建完成后进入应用可以看到我们开发需要的三个参数:APPID,APISecret,APIKey 3.因为平台提供的SDK中只支持了简单的中英两种语言语音…...
Vuex 页面刷新数据丢失怎么解决
当Vuex中的数据在页面刷新后丢失时,这通常是因为Vuex的状态数据是保存在运行内存中的,页面刷新会导致Vue实例重新加载,进而Vuex中的数据被重置为初始状态。为了解决这个问题,可以采取以下几种方法: 1. 使用浏览器的本…...
如何使用Cloudways搭建WordPress网站
如今,搭建网站已经变得非常简单,这主要得益于开源的CMS建站系统的兴起。即使是不懂编程的人也能轻松搭建自己的网站,这些CMS系统提供了丰富的主题模板和插件,使用户可以通过简单的拖放和配置操作来建立自己的网站。 WordPress是目…...
Lora理解
Parameter-Efficient Fine-Tuning (PEFT) :节约开销的做法,fine-tune少量参数,而不是整个模型; Low-Rank Adaptation (LoRA) :是PEFT的一种;冻结原参数矩阵,只更新2个小参数矩阵。...
EtherCAT总线掉线如何自动重启
EtherCAT通信如果是从站掉线我们可以勾选上自动重启功能如下图所示: 1、自动重启从站 待续........
量子机器学习在水质预测中的实践:QSVC与QNN模型对比分析
1. 项目概述:当量子计算遇见水质监测作为一名长期关注前沿技术落地的从业者,我最近完成了一个将量子机器学习(QML)应用于水质预测的实践项目。这个项目的核心,是尝试用量子计算的新范式,去解决一个经典的环…...
AI应用成本工程:让你的LLM系统降本30%-70%的工程实践
成本问题是AI应用规模化的最大障碍 一个运行良好的AI原型,扩展到生产规模时往往面临一个令人震惊的现实:成本。举个典型案例:一个内部知识库问答系统,在100用户规模测试时每月花费约500元,感觉完全可接受。当推广到500…...
基于MultiFold无分箱反卷积的轻子-喷注方位角不对称性测量
1. 项目概述与核心物理动机在粒子物理的高能前沿,我们常常通过“撞击”基本粒子来窥探其内部结构,深度非弹性散射(DIS)就是其中最经典、最有力的探针之一。想象一下,你用一束极高能量的电子(或正电子&#…...
如何快速获取网盘直链:LinkSwift 下载助手配置指南
如何快速获取网盘直链:LinkSwift 下载助手配置指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...
RAG:终结AI“一本正经胡说八道”,让AI回答问题不再答非所问!
本文用通俗易懂的方式解释了RAG技术,即“检索增强生成”,它通过为AI构建专属知识库,在回答问题时先检索相关信息再生成答案,有效解决AI“答非所问”和“幻觉”问题。文章详细介绍了RAG的工作原理、核心价值及实用场景,…...
3分钟彻底清理Windows右键菜单!ContextMenuManager让你的效率提升200%
3分钟彻底清理Windows右键菜单!ContextMenuManager让你的效率提升200% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是不是也遇到过这种情况&…...
结构可辨识性映射:提升小样本时间序列分类性能的机理驱动方法
1. 项目概述:当动态系统建模遇上机器学习分类在生物医学、工业过程控制这些领域,我们常常会遇到一个核心问题:如何根据一组随时间变化的观测数据(也就是时间序列),来判断系统当前处于哪种状态或类别&#x…...
告别Cygwin!用Windows版MRT一键批量拼接MODIS影像(附详细配置流程)
告别Cygwin!Windows版MRT全流程实战:MODIS影像批量拼接指南 遥感数据处理的门槛正在被技术进步不断拉低。曾几何时,在Windows系统下处理MODIS数据意味着必须忍受Cygwin这类Linux模拟环境的笨重与兼容性问题——环境配置复杂、命令操作反直觉、…...
Windows11下Detectron2安装避坑指南:从CUDA版本匹配到源码修改(附常见错误解决方案)
Windows 11下Detectron2深度安装指南:从环境配置到源码级问题解决 在计算机视觉领域,Detectron2作为Facebook Research推出的开源框架,凭借其模块化设计和出色的性能表现,已成为目标检测、实例分割等任务的首选工具之一。然而&…...
量子计算中的ZZ串扰问题与周期感知优化方法
1. 量子硬件中的ZZ串扰问题解析在NISQ(含噪声中等规模量子)时代,量子硬件面临的最大挑战之一就是各种噪声源对量子计算过程的干扰。其中,ZZ串扰(ZZ crosstalk)是一种特别棘手的噪声机制,它源于量…...
