Spring Boot MyBatis Plus 配置数据源详解

文章目录

    • 1. 引入 MyBatis Plus 依赖
    • 2. 数据源配置
    • 3. MyBatis Plus 配置
    • 4. 动态数据源配置(多数据源)
    • 5. 小结

在这里插入图片描述

🎉欢迎来到架构设计专栏~Spring Boot MyBatis Plus 配置数据源详解


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:架构设计
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

Spring Boot与MyBatis Plus的结合,为Java开发者提供了一种简便而高效的持久化解决方案。其中,数据源配置是整合过程中的重要一环。本文将深入探讨如何在Spring Boot项目中配置MyBatis Plus所使用的数据源,以及一些相关的拓展和分析。

在这里插入图片描述

1. 引入 MyBatis Plus 依赖

首先,在pom.xml中引入MyBatis Plus的相关依赖:

<!-- MyBatis Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.1</version>
</dependency>

这个依赖将自动导入MyBatis Plus所需的其他依赖,简化了项目的配置。

2. 数据源配置

在Spring Boot中,数据源的配置通常位于application.propertiesapplication.yml文件中。下面是一个简单的数据源配置示例:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 连接池配置(可选)
spring.datasource.hikari.maximum-pool-size=10

在这个配置中,我们指定了数据库的URL、用户名、密码和驱动类。如果你希望使用连接池,可以添加连接池的相关配置,这里以Hikari连接池为例。

3. MyBatis Plus 配置

MyBatis Plus的配置通常需要继承MybatisPlusConfigurerAdapter类,并通过@Configuration注解标记为配置类。以下是一个简单的配置示例:

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan("com.example.mapper") // 扫描 Mapper 接口所在的包
public class MybatisPlusConfig {

    @Bean
    public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*.xml"));
        sessionFactoryBean.setConfiguration(mybatisConfiguration());
        sessionFactoryBean.setPlugins(new Interceptor[]{paginationInterceptor()});

        return sessionFactoryBean;
    }

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    private MybatisConfiguration mybatisConfiguration() {
        MybatisConfiguration configuration = new MybatisConfiguration();
        configuration.setMapUnderscoreToCamelCase(true);
        configuration.setCacheEnabled(false);

        return configuration;
    }
}

在这个配置类中,我们使用@MapperScan注解指定了Mapper接口的扫描路径,并通过@Bean注解配置了MybatisSqlSessionFactoryBean。此外,我们还配置了分页插件PaginationInterceptor以及一些MyBatis的基本配置,比如下划线转驼峰、关闭缓存等。

4. 动态数据源配置(多数据源)

在一些复杂的项目中,可能需要配置多个数据源以满足不同业务需求。Spring Boot通过AbstractRoutingDataSource提供了动态数据源的支持。以下是一个简单的多数据源配置示例:

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

public class DynamicDataSource extends AbstractRoutingDataSource {

    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();

    public DynamicDataSource(DataSource defaultDataSource, Map<Object, Object> targetDataSources) {
        super.setDefaultTargetDataSource(defaultDataSource);
        super.setTargetDataSources(new HashMap<>(targetDataSources));
       

 super.afterPropertiesSet();
    }

    public static void setDataSource(String dataSourceKey) {
        CONTEXT_HOLDER.set(dataSourceKey);
    }

    public static String getDataSource() {
        return CONTEXT_HOLDER.get();
    }

    public static void clearDataSource() {
        CONTEXT_HOLDER.remove();
    }

    @Override
    protected Object determineCurrentLookupKey() {
        return getDataSource();
    }
}

上述代码中,我们继承了AbstractRoutingDataSource,并通过ThreadLocal来保存当前数据源的key。在具体的业务中,通过调用DynamicDataSource.setDataSource("dataSourceKey")来切换数据源。

5. 小结

通过以上步骤,我们完成了在Spring Boot项目中配置MyBatis Plus数据源的过程。首先引入MyBatis Plus的相关依赖,然后在application.propertiesapplication.yml中配置数据源,接着通过一个配置类进行MyBatis Plus的相关配置。最后,如果需要多数据源支持,可以使用AbstractRoutingDataSource实现动态数据源的切换。

在这里插入图片描述

在实际项目中,根据具体的业务需求,可能还需要更详细的配置和优化。希望本文的内容对你在Spring Boot项目中使用MyBatis Plus提供一些帮助。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux电脑投屏到电视的简洁操作

Linux电脑投屏到安卓电视有多种好处。 首先&#xff0c;通过将Linux电脑与安卓电视连接&#xff0c;用户可以轻松地将电脑屏传输到电视上&#xff0c;从而获得更加舒适和清晰的视觉体验。 其次&#xff0c;投屏功能可以帮助用户在电视上展示电脑中的图片、视频和其他多媒体文件…

GitHub Universe 2023:AI 技术引领软件开发创新浪潮

GitHub 是全球领先的软件开发和协作平台&#xff0c;数百万开发者和企业在此分享、学习和创建卓越的软件。同时 GitHub 处在 AI 技术前沿&#xff0c;通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命。在今天的文章中&#xff0c;我们将一起看看在 GitHub 年度大会…

InputStream和OutputStream

文章目录 &#x1f4a1;FileInputStream 构造方法&#x1f4a1;InputStream 常用方法&#x1f4a1;OutputStream 概述&#x1f4a1;OutputStream 常用方法&#x1f4a1;PrintWriter&#x1f4a1;小程序练习 使用字节流进行读/写操作时&#xff0c;是以字节为单位的&#xff1b;…

常用网络命令(实习报告)

南京信息工程大学 实验&#xff08;实习&#xff09;报告 实验&#xff08;实习&#xff09;名称 常用网络命令 实验&#xff08;实习&#xff09;日期 2017/5/25 得分 指导教师 *** 专业 网络工程 年级 2015 班次 1 姓名 *** …

java排序算法之桶排序

图解 桶排序&#xff08;Bucket sort&#xff09;是一个排序算法&#xff0c;它的主要思想是将需要排序的数据分到有限数量的桶里。每个桶里的数据再进行单独的排序&#xff0c;最后按照顺序将每个桶里的数据依次取出&#xff0c;即可完成排序。 桶排序的具体实现可以分为以下几…

【2021集创赛】 RISC-V杯三等奖:基于E203 处理器的SM4算法硬件加速

杯赛题目&#xff1a;基于蜂鸟E203 RISC-V处理器内核的SoC设计 参赛要求&#xff1a;研究生组/本科生组 赛题内容&#xff1a; 基于芯来科技的开源蜂鸟E203 Demo SoC进行扩展&#xff0c;在限定的可编程逻辑平台上构建面向专用应用领域&#xff08;譬如人工智能、信息安全、工业…

动手学深度学习——语言模型和数据集(代码详解)

文章目录 语言模型与数据集1. 学习语言模型2. 马尔可夫模型与n元语法3. 自然语言统计4. 读取长序列数据4.1 随机采样4.2 顺序分区 语言模型与数据集 了解到如何将文本数据映射到词元&#xff0c;以及将这些词元视作一系列的离散观测&#xff0c;例如单词或字符。 给定一个文本…

《洛谷深入浅出进阶篇》P3397 地毯————二维差分

上链接&#xff1a;P3397 地毯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3397 上题干&#xff1a; 题目描述 在 nn 的格子上有 m 个地毯。 给出这些地毯的信息&#xff0c;问每个点被多少个地毯覆盖。 输入格式 第一行&#xff0c;两个…

配置sonarQube

1.新版本需要安装JDK11以上版本 2.修改解压&#xff08;解压在一个路径不包含特殊符号、中文、空格的位置里&#xff09;出来的sonar文件夹中conf下面的配置文件(sonar.properties) sonar.jdbc.usernameXXX sonar.jdbc.passwordXXXsonar.jdbc.urljdbc:sqlserver://172.168.1.…

小学生写作业用什么台灯好?专业的学生台灯推荐

说到台灯相信大家都不陌生&#xff0c;不管是办公族还是学生基本都会备上一台。而且现在的孩子很多都是存在视力问题的&#xff0c;主要的原因就是学习压力太大了&#xff0c;用眼时间过长导致的。所以很多家长选择给孩子使用更为专业的护眼台灯。 不过目前市面上的灯具也是良莠…

Qt Jom Parallel Builds 并行构造

1.Qt官网下载 Jom - Qt Wiki 下载jom源码 git clone git://code.qt.io/qt-labs/jom.git 2.生成makefile qmake -r 进入jom源码目录 执行qmake -r 3.编译 nmake jom编译成功 4.复制到qmake所在目录并运行

基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要 美食网站是一个提供各种美食信息和食谱的网站&#xff0c;旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及&#xff0c;越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…

SAP删除自建、系统表数据的方法

1、输入前台事务码 SE16N 进入 常规表显示 2、输入自建表名称后&#xff0c;回车展示字段 在事务栏中输入 /H 启用编辑 敲击回车 &#xff08;消息显示调试被激活&#xff09; 然后点击执行 3、在右下角栏目中输入 GD-SAPEDIT 和 GD-EDIT 点击 小笔 启用编辑&#xff0c;将两…

哔哩哔哩自动引流软件的运行分享,以及涉及到技术与核心代码分享

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 大家好&#xff0c;我是一名专注于自动引流软件研发的技术专家。今天&#xff0c;我将与大家分享自动引流软件涉及到的技术与核心代码&#xff0c;希望能为大家提供一些有价值的参…

【每日一题】2656. k个元素的最大和-2023.11.15

题目&#xff1a; 2656. K 个元素的最大和 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次&#xff0c;最大化你的得分&#xff1a; 从 nums 中选择一个元素 m 。将选中的元素 m 从数组中删除。将新元素 m 1 添加到数组中。你的得分增…

冰点还原精灵Deep Freeze for mac:Mac用户的最佳系统保护选择

你是否曾在Mac上安装软件后&#xff0c;发现系统性能下降&#xff0c;或者某些应用程序无法正常运行&#xff1f;这些问题可能让你感到困扰&#xff0c;但幸运的是&#xff0c;有一个解决方案可以帮你解决这些问题——Faronics Deep Freeze for mac。 Deep Freeze for mac是一…

3.1 Linux 前置知识

1、硬件 我们知道&#xff0c;组成计算机的硬件主要有“主机”和“输入/输出设备”。 主机包括机箱、电源、主板、CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09;、内存、显卡、声卡、网卡、 硬盘、光驱等。输入/输出设备包括显示器、键盘、鼠标…

dubbo服务超时导致的异常

今天服务器启动项目时&#xff0c;页面刷新报错&#xff1a; 查看日志时报错信息为&#xff1a; 解决&#xff1a; 在对应服务的配置文件中配置dubbo超时时间&#xff1a; 随后问题得到解决&#xff0c;特此记录

JimuReport积木报表 v1.6.5 版本发布—免费报表工具

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

虹科示波器 | 汽车免拆检修 | 2021款广汽丰田威兰达PHEV车发动机故障灯异常点亮

一、故障现象 一辆2021款广汽丰田威兰达PHEV车&#xff0c;搭载A25D-FXS发动机和动力蓄电池系统&#xff08;额定电压为355.2V&#xff0c;额定容量为45.0Ah&#xff09;&#xff0c;累计行驶里程约为1万km。车主反映&#xff0c;高速行驶时发动机突然抖动&#xff0c;且发动机…