SpringBoot连接Mysql数据库

SpringBoot之datasource(O) spring.dao.exceptiontranslation.enabled 是否开启PersistenceExceptionTranslationPostProcessor,默认为true spring.datasource.abandon-when-percentage-full 设定超时被废弃的连接占到多少比例时要被关闭或上报 spring.datasource. 阅读详情

本文记录Spring Boot连接单mysql数据源和多mysql数据源的一种配置方式。


单数据源

1.在pom.xml中添加相关依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>

注:上述配置中的mybatis-spring-boot-starter适用于Spring 2,若使用Spring 3,需要升级到更高版本(如3.0.4),否则会报错Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required。
 

2.在配置文件中配置数据库和mapper.xml文件信息

# 数据库账号密码
spring.datasource.url=jdbc:mysql://localhost:3306/first_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.username=first
spring.datasource.password=first
# mapper.xml文件路径
mybatis.mapper-locations=classpath:mappers/*.xml

3.使用

3.1.在/resources/mappers添加编写sql语句的xml文件

3.2.将接口类和SQL进行映射

有两种方法:

1. 在对应的Mapper接口类中添加@Mapper注解即可;
2. 在对应的Mapper接口类中添加@Repository注解,并在启动类添加@MapperScan("#{Mapper接口类所在包路径}")注解。

3.3.配置事务

默认开启事务(Spring 3.3.2中测试通过),无需特别配置,直接在代码中使用@Transactional注解即可。
 


多数据源

1.在pom.xml中添加相关依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

2.在配置文件中配置数据库和mapper.xml文件信息

# 第一个数据库配置
spring.datasource.first.url=jdbc:mysql://localhost:3306/first_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.first.username=first
spring.datasource.first.password=first
spring.datasource.first.mapper-locations=classpath:mappers/first/*.xml
spring.datasource.first.driver-class-name=com.mysql.cj.jdbc.Driver
# 第二个数据库配置
spring.datasource.second.url=jdbc:mysql://localhost:3306/second_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.second.username=second
spring.datasource.second.password=second
spring.datasource.second.mapper-locations=classpath:mappers/second/*.xml
spring.datasource.second.driver-class-name=com.mysql.cj.jdbc.Driver

3.Druid配置

第一个数据库的Druid配置

package com.example.dbtest.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.example.dbtest.dao.first", sqlSessionTemplateRef = "firstSqlSessionTemplate")
public class DruidFirstConfig {
    @Value("${spring.datasource.first.url:}")
    private String url;
    @Value("${spring.datasource.first.username:}")
    private String username;
    @Value("${spring.datasource.first.password:}")
    private String password;
    @Value("${spring.datasource.first.mapper-locations:}")
    private String mapperLocations;
    @Value("${spring.datasource.first.driver-class-name:}")
    private String driverClassName;

    @Bean
    public DataSource firstDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driverClassName);
        return dataSource;
    }

    @Bean
    public SqlSessionFactory firstSqlSessionFactory(@Qualifier("firstDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate firstSqlSessionTemplate(@Qualifier("firstSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean
    public DataSourceTransactionManager firstDataSourceTransactionManager(@Qualifier("firstDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

第二个数据库的Druid配置

package com.example.dbtest.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.example.dbtest.dao.second", sqlSessionTemplateRef = "secondSqlSessionTemplate")
public class DruidSecondConfig {
    @Value("${spring.datasource.second.url:}")
    private String url;
    @Value("${spring.datasource.second.username:}")
    private String username;
    @Value("${spring.datasource.second.password:}")
    private String password;
    @Value("${spring.datasource.second.mapper-locations:}")
    private String mapperLocations;
    @Value("${spring.datasource.second.driver-class-name:}")
    private String driverClassName;

    @Bean
    public DataSource secondDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driverClassName);
        return dataSource;
    }

    @Bean
    public SqlSessionFactory secondSqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate secondSqlSessionTemplate(@Qualifier("secondSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean
    public DataSourceTransactionManager secondDataSourceTransactionManager(@Qualifier("secondDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

3.使用

3.1.在/resources/mappers/first和/resources/mappers/second添加编写sql语句的xml文件

3.2.将接口类和SQL进行映射

在对应的Mapper接口类中添加@Mapper或@Repository注解即可,无需在启动类添加@MapperScan("#{Mapper接口类所在包路径}")注解(已经在对应的配置类添加过该注解了)。

3.3.配置事务

默认开启事务(Spring 3.3.2中测试通过),无需特别配置,直接在代码中使用@Transactional注解即可,注意@Transactional除了指定rollbackFor外,还需要指定事务管理器transactionManager,事务管理器名称为对应配置类的方法名(如firstDataSourceTransactionManager、secondDataSourceTransactionManager)。

动力节点王鹤SpringBoot3学习笔记——访问数据库 在代码中访问数据库,我们需要知道数据库程序所在的ip,端口,访问数据库的用户名和密码以及数据库的类型信息。Spring Boot支持多种数据库连接池,优先使用 HikariCP,其次是Tomcat pooling,再次是 Commons DBCP2,如果以上都没有,最后会使用Oracle UCP连接池。第二种是根据查询结果中包含的列,创建相对的实体类。如果使用@Transactional注释了受保护的、私有的或包可见的方法,则不会引发错误,但注释的方法不会显示配置的事务设置,事务不生效。 阅读详情

相关推荐

Springboot项目本地连接并操作MySQL数据库

CrossOrigin(origin=“*”):允许所有来源访问该url,解决本地访问跨域问题@RestController:@Controller和@ResponseBody的组合,它告诉Spring这个类是一个控制器(Controller),并且所有的方法返回的内容都直接写入HTTP响应体中,而不是解析为跳转路径,这通常用于RESTful Web服务,其中返回的数据是JSON或XML等格式。

m0_74823892的博客 1663

SpringBoot数据库配置:spring.datasource.platform作用

解释SpringBoot应用中,spring.datasource.platform配置的作用

ergo_9527的博客 2617

Windows11上CUDA 12.3配PyTorch踩坑记:一条官网命令救了我的GPU加速

本文详细介绍了在Windows 11上配置CUDA 12.3与PyTorch的完整指南,包括环境准备、安装要点、兼容性解决方案和性能验证。通过官方推荐的conda命令和实用技巧,帮助开发者解决常见问题,实现高效的GPU加速,提升深度学习开发效率。

weixin_42528974的博客 109

SpringBoot系列之数据库初始化-datasource配置方式

在我们的日常业务开发过程中,如果有db的相关操作,通常我们是直接建立好对应的库表结构,并初始化对应的数据,即更常见的情况下是我们在已有表结构基础之下,进行开发;但是当我们是以项目形式工作时,更常见的做法是所有的库表结构变更、数据的初始、更新等都需要持有对应的sql变更,并保存在项目工程中,这也是使用liqubase的一个重要场景;将上面的问题进行简单的翻译一下,就是如何实现在项目启动之后执行相应的sql,实现数据库表的初始化?

mxt51220的博客 5577

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

本地部署开源视频会议解决方案 Jitsi Meet 并实现外网访问

Jitsi Meet 是一款基于 WebRTC 技术的开源视频会议解决方案,它允许用户通过互联网进行高质量的视频通话、语音通话和文本聊天,非常适合用于在线教育、远程办公、团队协作等场景。本文将详细介绍如何利用 Docker 在本地部署 Jitsi Meet 并结合路由侠实现外网访问本地部署的 Jitsi Meet。

lyxnwct的博客 1946

Nacos踩坑篇

1、Nacos下载版本 下载地址:https://github.com/alibaba/nacos/releases 根据自己需要的版本环境选择下载安装 2、解压启动 解压启动这个地方发现一个问题,就是我解压完成在启动的时候闪退一道黑影闪过不知道发生了什么,查询资料发现Nacos启动必须要求JDK1.8以上,64位的系统,必须要有JAVA_HOME这个环境变量,查看了一下环境变量,发现当初配的时候没有用JAVA_HOME这个环境变量,于是重新配置了一下: 1.JAVA_HOME为JDK的安装目录 3

冒险的梦想家的博客~ 3023

海洋浮游生物识海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI别系统:基于海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI展示YOLOv10的显微图像自动检测与UI展示

本文介绍了如何利用YOLOv10模型进行海洋浮游生物的自动识别,旨在提高传统显微镜观测的效率与准确性。研究背景强调了浮游生物在海洋生态系统中的重要性,并指出传统方法的局限性。数据集选用WHOI-Plankton,包含70多种浮游生物的20000多张带标签图像。文章详细描述了YOLOv10模型的安装、数据集配置、训练与测试步骤,并提供了基于PyQt5的图形化检测界面代码。结果显示,模型在精度、召回率和mAP@0.5等指标上表现优异,推理速度达到约30 FPS。最后,文章提出了部署建议和未来优化方向,如集成摄像

YOLO 376

SpringBoot基础学习之(十二):通过spring boot框架连接MySql数据库(通过idea中的工具Database连接Mysql数据库)

如何实现在spring boot项目中使用idea工具Database连接数据库

m0_52479012的博客 2040

Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现

既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。 返回总目录...

DSMGUOGUO的博客 1436

【报错】raise pickle.UnpicklingError(_get_wo_message(str(e))) from None_pickle.UnpicklingError: Weigh

File "/opt/conda/envs/py_3.12/lib/python3.12/site-packages/torch/serialization.py", line 1470, in load raise pickle.UnpicklingError(_get_wo_message(str(e))) from None _pickle.UnpicklingError: Weights only load failed.

静谧、淡雅 783

基于SpringBoot后端实现连接MySQL数据库并存贮数据

MySQL是一种流行的关系型数据库管理系统(RDBMS),它是开源的,由瑞典公司MySQL AB开发。现在MySQL是Oracle公司的一部分,但MySQL仍然作为开源项目继续开发和维护。1. 关系型数据库管理系统(RDBMS):MySQL是一种关系型数据库,数据以表格的形式存储,这些表格可以通过关系进行连接。MySQL是开源的,意味着你可以免费使用它,而且有一个庞大的开源社区支持。3. 跨平台性:MySQL支持多种操作系统,包括Linux、Windows、macOS等,可以在各种环境中部署和运行。

a910247的博客 9450

从零开始学习CANoe(六)—— CAPL 测试节点

创建CAPL Test Module的两种方式

蚂蚁小兵 1万+

【Spring】SpringBoot 学习教程(三):Spring Boot连接MySQL数据库

1.简介 本文主要介绍Spring Boot连接数据库的方式,以及如何进行增删改查。 2.环境 jdk 1.8+ Maven 3.0+ IDEA MySQL 3.Spring Boot用JdbcTemplate方式连接数据库 3.1 创建表和初始化数据 DROP TABLE IF EXISTS `test_user`; CREATE TABLE `test_user` ( `id` ...

然后微微笑的博客 4952

C#【必备技能篇】Winform实现多语言切换(.resx文件的应用)

在实际的项目开发中,软件需要实现多语言切换。本文通过一个实际的例子,可以让你学习到这个技能。

星Yeah 的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringBoot 是怎样连接 MySql 数据库的

本文介绍了 Spring Boot 是如何连接数据库的,包括其原理和代码示例。通过使用 Spring Data JPA,Spring Boot 可以轻松地连接各种类型的数据库,并实现基本的 CRUD 操作。在实际开发中,可以通过修改配置文件和创建实体类、Repository 接口和控制器类来访问数据库。

it_xushixiong的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

springboot连接mysql数据库_Spring Boot连接MySQL数据库

上篇 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 已经构建了一个Spring Boot项目,本文在此基础上进行连接MySQL数据库的操作。1. pom.xml添加依赖org.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-java2. application.properti...

weixin_39895096的博客 486

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot配置MySQL数据库连接数

如何在Spring Boot中配置MySQL数据库连接数。

m0_72958694的博客 3334

springboot连接mysql_Spring Boot高级教程之Spring Boot连接MySql数据库

Spring Boot可以大大简化持久化任务,几乎不需要写SQL语句,在之前章节“Spring Boot 构建框架”中我们新建了一个Spring Boot应用程序,本章在原有的工程中与数据库建立连接。Spring Boot有两种方法与数据库建立连接,一种是使用JdbcTemplate,另一种集成Mybatis,下面分别为大家介绍一下如何集成和使用这两种方式。1. 使用JdbcTemplatemys...

weixin_32944341的博客 723

springboot连接mysql_Spring Boot 连接MySql数据库

Spring Boot可以大大简化持久化任务,几乎不需要写SQL语句,在之前章节“Spring Boot 构建框架”中我们新建了一个Spring Boot应用程序,本章在原有的工程中与数据库建立连接。Spring Boot有两种方法与数据库建立连接,一种是使用JdbcTemplate,另一种集成Mybatis,下面分别为大家介绍一下如何集成和使用这两种方式。1. 使用JdbcTemplatemys...

weixin_29102619的博客 597

springboot连接mysql数据库测试

springboot连接mysql数据库 pom文件依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ...

ZLNEW优快云的博客 4678

springboot|springboot连接mysql数据库

javaDEMO本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~...

微笑的小小刀 1176
上一篇: MongoDB账号管理
下一篇: 自定义SpringBoot+Swagger中@ApiModel默认名称
java_t_t
博客等级 码龄9年 171粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值