SpringBoot与MyBatis的快速整合(基于注解)

news2024/11/28 10:47:48

在这里插入图片描述

文章目录

  • 创建Spring Boot项目
  • 配置数据库连接信息
  • 编写MyBatis Mapper接口
  • 使用XML文件编写SQL映射
  • 配置数据源切换
    • 引入Druid依赖
    • 配置Druid数据源
  • 配置MyBatis支持事务管理

在使用Spring Boot创建新项目或新模块时,如果需要使用MyBatis来进行数据库操作,可以按照以下步骤来快速配置项目,并利用Druid数据源提高性能和管理数据库连接:

创建Spring Boot项目

  1. 打开Spring Initializr网站(start.spring.io)。
  2. 填写项目的基本信息,比如Group、Artifact、Name等。
  3. 在Dependencies中选择以下依赖:
    • MySQL Driver:用于连接MySQL数据库的JDBC驱动程序。
    • MyBatis Framework:MyBatis持久层框架。

创建spring boot新项目或者新模块需要用到mybatis的时候,需要在选择依赖关系的时候勾选MySQL DriverMybatis Framework两个依赖,创建项目即可
在这里插入图片描述

注意:如果在选择依赖时出现MyBatis Framework选项不可用,请切换Spring Boot版本到>=3.2.0 and <3.3.0-M1之间。

  • MySQL Driver是一个用于连接Java应用程序和MySQL数据库的JDBC(Java Database Connectivity)驱动程序。该驱动程序负责在Java应用程序和MySQL数据库之间进行通信,允许应用程序执行SQL查询、更新、插入等数据库操作。

  • MyBatis是一个基于Java的持久层框架,它的主要作用是简化数据库操作,提供了一种更加直观和灵活的方式来执行SQL查询、插入、更新和删除等数据库操作。

配置数据库连接信息

在项目的application配置文件中加上数据库的配置信息(确保MySQL服务正常开启)

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///ssm1
    username: 用户名
    password: 密码

最后无需像之前的spring项目加很多配置注解,只需要在访问数据库的数据层接口上方加上@Mapper注解,会自动配置映射文件


编写MyBatis Mapper接口

在MyBatis中,@Mapper注解主要用于标识接口,指示MyBatis框架将这个接口视为一个映射器(Mapper)。映射器是定义数据库操作的接口,而MyBatis会根据这些接口生成对应的实现。

@Mapper注解用于标识一个接口,告诉MyBatis框架这个接口是一个映射器接口,其中定义了与数据库相关的SQL操作。

在数据访问层定义Mapper接口,并使用@Mapper注解标识:

@Mapper
public interface BookDao {
    @Select("select * from tb1_book where id = #{id}")
    public Book getByID(Integer id);
}

使用XML文件编写SQL映射

除了在注解中写SQL,也可以使用XML文件来编写SQL映射:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

<mapper>:这是MyBatis映射文件的根元素。
namespace属性:指定这个Mapper文件的命名空间,通常对应于一个Java接口的全限定名。在这个例子中,它是org.mybatis.example.BlogMapper。命名空间用于区分不同Mapper中的SQL语句,防止命名冲突。
<select>:定义一个SELECT查询。MyBatis中可以使用不同的标签来定义不同类型的SQL操作,例如<insert>、<update>、<delete>等。
id属性:指定这个SQL查询的唯一标识符。在这个例子中,id=“selectBlog”。在Java代码中,通过这个ID来引用这个SQL语句。
resultType属性:指定这个查询的返回结果类型。在这个例子中,返回的结果类型是Blog,即对应的Java类名。

配置数据源切换

如果需要切换到其他数据源(如阿里巴巴的Druid数据源),需要引入对应的Maven依赖,并在配置文件中进行设置。

  • 数据源负责管理数据库连接的创建、分配、释放和维护。在应用程序需要与数据库进行交互时,数据源会提供一个可用的数据库连接,而不是每次都创建一个新的连接。这有助于减少连接的创建和销毁开销,提高性能。

引入Druid依赖

在pom.xml文件中添加Druid依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

Druid是一个开源的高性能、可扩展的数据库连接池。它支持监控、防火墙、统计和其他丰富的功能。在Java项目中,Druid常用于管理数据库连接,提高性能,并提供了一些有用的监控和统计功能。

当在项目中引入了这个Maven依赖后,可以在项目中使用Druid作为数据源,提供数据库连接的管理功能。通常,你还需要在配置文件中进行相应的数据源配置,包括连接URL、用户名、密码等。

配置Druid数据源

在Spring Boot项目中,你可以在application.propertiesapplication.yml文件中添加如下配置:

  • YAML活YML文件写法
# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

  # 配置使用Druid数据源
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource

  # Druid连接池的一些配置
    initial-size: 5  # 初始连接池大小
    min-idle: 5  # 最小空闲连接数
    max-active: 20  # 最大活动连接数
    max-wait: 60000  # 获取连接的最大等待时间(毫秒)
    time-between-eviction-runs-millis: 60000  # 两次扫描连接池的时间间隔(毫秒)
    min-evictable-idle-time-millis: 300000  # 连接在池中最小生存的时间(毫秒)
    validation-query: SELECT 1 FROM DUAL  # 用于校验连接的SQL查询语句
    test-while-idle: true  # 空闲时是否进行连接的校验
    test-on-borrow: false  # 取得连接时是否进行连接的校验
    test-on-return: false  # 归还连接时是否进行连接的校验
    pool-prepared-statements: true  # 是否缓存PreparedStatement
    max-pool-prepared-statement-per-connection-size: 20  # 每个连接上缓存的PreparedStatement数量
    filters: stat,wall,log4j  # 配置监控统计、防火墙、日志等功能的过滤器列表
    connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  # 连接池的扩展属性
  • properties文件写法
# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 配置使用Druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# Druid连接池的一些配置
spring.datasource.initial-size=5  # 初始连接池大小
spring.datasource.min-idle=5  # 最小空闲连接数
spring.datasource.max-active=20  # 最大活动连接数
spring.datasource.max-wait=60000  # 获取连接的最大等待时间(毫秒)
spring.datasource.time-between-eviction-runs-millis=60000  # 两次扫描连接池的时间间隔(毫秒)
spring.datasource.min-evictable-idle-time-millis=300000  # 连接在池中最小生存的时间(毫秒)
spring.datasource.validation-query=SELECT 1 FROM DUAL  # 用于校验连接的SQL查询语句
spring.datasource.test-while-idle=true  # 空闲时是否进行连接的校验
spring.datasource.test-on-borrow=false  # 取得连接时是否进行连接的校验
spring.datasource.test-on-return=false  # 归还连接时是否进行连接的校验
spring.datasource.pool-prepared-statements=true  # 是否缓存PreparedStatement
spring.datasource.max-pool-prepared-statement-per-connection-size=20  # 每个连接上缓存的PreparedStatement数量
spring.datasource.filters=stat,wall,log4j  # 配置监控统计、防火墙、日志等功能的过滤器列表
spring.datasource.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  # 连接池的扩展属性

最后创建对应的实体类和Mapper接口进行测试即可!

配置MyBatis支持事务管理

在SpringBoot的入口类中,使用@EnableTransactionManagement注解来启用事务管理器。
在这里插入图片描述
在需要回滚的业务逻辑层的Service类中,使用@Transactional注解来开启事务管理。这样,当方法执行时,如果发生异常,事务会自动回滚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1804836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot的教学管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;教师管理&#xff0c;学生管理&#xff0c;课程管理 教师账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;课程管理&#xff0c;课程表…

8.数砖数

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/879 题目描述 给定一种 2222 规格的瓷砖,…

樱花动漫2024最新网页地址链接

大家好&#xff01;今天我要为大家种草一个非常棒的动漫资源在线平台——樱花动漫网页。作为一个网络文化研究者&#xff0c;我一直在关注当代动漫文化的发展和传播方式。而樱花动漫网页正是我近期发现的一颗璀璨明珠&#xff0c;它不仅为动漫爱好者提供了一个交流、分享的平台…

python机器人编程@我从0开始搭建了一个色块自动抓取机器人,并实现了大模型的接入和语音控制——(上基础篇)

目录 1、前言2、仿真环境的搭建3、仿真环境资源链接4、总结1、前言 在现代社会中,机器人技术正变得越来越普遍和重要。机器人的自动化能力使其能够在许多不同的领域发挥作用,例如生产线、医疗保健和家庭助理等。本系列将着重介绍如何搭建一个自动色块抓取机器人。 首先,我…

大模型相关:ChatGPT的原理与架构

一、大模型面临的挑战 1.1 Transformer模型的缺陷&#xff1a; 与RNN相比Transformer面临以下挑战&#xff1a; 并行计算能力不足。RNN需要按序处理序列数据中的每个时间步&#xff0c;这限制了它在训练过程中充分利用现代GPU的并行计算能力&#xff0c;从而影响训练效率。长…

【qt】项目移植

项目移植 一.前言二.同名问题三.具体操作1.修改文件名2.修改类名3.修改一些不能自动改的名4.修改.ui文件5.删除原来自动生成的ui_xxx.h文件6.修改头文件 四.导入项目五.使用导入的项目六.项目建议 一.前言 终于概率论考完了,有时间了,接着上个项目,我们继续来完成我们的多窗口开…

新材料正不断推动模具3D打印行业发展

随着工业4.0的浪潮席卷全球&#xff0c;模具制造行业也迎来了技术革新的新纪元。3D打印技术以其独特的制造优势&#xff0c;正逐渐在模具制造领域崭露头角。然而&#xff0c;要实现模具3D打印技术的广泛应用&#xff0c;高性能的打印材料是不可或缺的关键因素。 材料是模具3D打…

【机器学习】我们该如何评价GPT-4o?GPT-4o的技术能力分析以及前言探索

目录 &#x1f926;‍♀️GPT-4o是什么&#xff1f; &#x1f68d;GPT-4o的技术能力 1. 自然语言理解 2. 自然语言生成 3. 对话系统 4. 语言翻译 5. 文本纠错 6. 知识问答 7. 定制和微调 8. 透明性和可解释性 9. 扩展性 &#x1f690;版本对比分析 1. GPT-4标准版 …

AMD GPU ISA 阅读

Reading AMD GPU ISA — ROCm Blogs 对于应用开发者来说&#xff0c;了解用于执行其计算的 GPU 架构的指令集架构&#xff08;ISA&#xff09;通常是非常有帮助的。理解感兴趣的代码区域的指令可以帮助调试和实现应用程序的性能优化。 在这篇博客文章中&#xff0c;我们将讨论…

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台&#xff0c;采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术&#xff0c;实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…

深度学习笔记: 最详尽广告点击预测系统设计

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; 广告点击预测 1. 问题描述 建立一个机器学习模型来预测广告是否会被点击。 为了简化&#xff0c;我们不…

保姆级 | MySQL的安装配置教程(非常详细)

一、下载Mysql 官网步骤 MySQLhttps://www.mysql.com/进入官网首页 点击DOWNLOADS 点击MySQL Community (GPL) Downloads 点击 小页面直接进入 MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/installer/点击“Download”下载最新版本&#xff0c;其他…

Java进阶_抽象类与方法

抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类。 抽象类除了不能实例化对象之…

程序员学习Processing和TouchDesigner视觉编程相关工具

Proessing Processing 是一种用于视觉艺术和创意编程的开发环境和编程语言。它最初是为了帮助非专业程序员学习编程&#xff0c;特别是那些对于创意编程和视觉表达感兴趣的人。Processing 提供了简单易用的 API&#xff0c;使得绘制图形、创建动画和交互式应用变得相对容易。 …

ssm615基于ssm的房源管理系统+vue【已测试】

前言&#xff1a;&#x1f469;‍&#x1f4bb; 计算机行业的同仁们&#xff0c;大家好&#xff01;作为专注于Java领域多年的开发者&#xff0c;我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源&#xff1a; &#x1f469;‍&#x1f4bb; SpringBoot…

DALL·E2最详细解读篇章

CLIP被证明其可以学习到鲁棒的图像特征&#xff0c;可以有效的捕获图像的语义和风格&#xff0c;且具有很强的zero-shot能力。另外&#xff0c;Diffusion是目前最优的生成式框架&#xff0c;其推动了图像、视频生成任务的最先进性能。Classifier-Free Diffusion指导技术以样本多…

H.264官方文档下载

H.264是ITU&#xff08;International Telecommunication Union&#xff0c;国际通信联盟&#xff09;和MPEG&#xff08;Motion Picture Experts Group&#xff0c;运动图像专家组&#xff09;联合制定的视频编码标准。其官方文档可以在ITU官网上下载&#xff1a;https://www.…

Python一些小操作

矢量图 from matplotlib_inline import backend_inline backend_inline.set_matplotlib_formats(svg)matplotlib中文问题 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]["SimHei"] #设置字体 plt.rcParams["axes.unicode_minus…

wps:样式集的使用【笔记】

wps&#xff1a;样式集的使用【笔记】 前言版权推荐wps&#xff1a;样式集的使用1拿到一个内容模板2修改样式集3修改样式的详细说明4保存样式集5应用样式集 说明另外最后 前言 2024-6-5 23:36:20 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删除以…

未来AI大模型的发展趋势

大家好&#xff0c;我是小悟 未来AI大模型的发展趋势无疑将是多元化、高效化、普及化以及人性化。随着技术的飞速进步&#xff0c;AI大模型将在各个领域中展现出更加广泛和深入的应用&#xff0c;成为推动社会进步的重要力量。 多元化是AI大模型发展的重要方向。随着数据量的…