广告
返回顶部
首页 > 资讯 > 精选 >tk-mybatis整合springBoot使用两个数据源的方法是什么
  • 637
分享到

tk-mybatis整合springBoot使用两个数据源的方法是什么

2023-06-21 21:06:31 637人浏览 八月长安
摘要

这篇文章主要介绍“tk-mybatis整合SpringBoot使用两个数据源的方法是什么”,在日常操作中,相信很多人在tk-mybatis整合springBoot使用两个数据源的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的

这篇文章主要介绍“tk-mybatis整合SpringBoot使用两个数据源的方法是什么”,在日常操作中,相信很多人在tk-mybatis整合springBoot使用两个数据源的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”tk-mybatis整合springBoot使用两个数据源的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

根据项目功能需求,需要与第三方公共库对接,需要对公共库进行相关操作,由于不想使用原生jdbc,所以采用mybaits进行多数据配置。

单纯的使用mybaits进行多数据配置网上资料很多,但由于前期为了方便开发,采用了tk-mybaits。关于tk-mybaits多数据源配置没有相关材料,官方也没有提供相关功能说明,所以最终采用mybatis+tk-mybaits分别使用的策略进行多数据源配置功能实现。具体代码如下

一、配置连接信息

#开发运行环境数据库spring.datasource.local.url=jdbc:mysql://0.0.0.0:3306/zhddspring.datasource.local.username=rootspring.datasource.local.passWord=spring.datasource.local.driver-class-name=com.Mysql.jdbc.Driverspring.datasource.local.druid.initial-size=1spring.datasource.local.druid.min-idle=1spring.datasource.local.druid.max-active=20spring.datasource.local.druid.test-on-borrow=truespring.datasource.local.druid.stat-view-servlet.allow=true #第三方对接通用数据库spring.datasource.public.url=jdbc:mysql://0.0.0.0:3306/zhddspring.datasource.public.username=rootspring.datasource.public.password=spring.datasource.public.driver-class-name=com.mysql.jdbc.Driverspring.datasource.public.druid.initial-size=1spring.datasource.public.druid.min-idle=1spring.datasource.public.druid.max-active=20spring.datasource.public.druid.test-on-borrow=truespring.datasource.public.druid.stat-view-servlet.allow=true

 二、配置DataSource数据源

 注意两个数据源中有一个是为主数据源,需要增加一个@Primary注解,有且只能有一个需要。关于2个以上数据源没有额外再进行研究了,不过利用mybatis再额外配置多个数据源应该可以实现

数据源1配置

package com.hiynn.core.mybatis; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configurationpublic class LocalDataSourceConfig {     @Bean(name = "localDataSource")    @ConfigurationProperties(prefix = "spring.datasource.local")    @Primary    public DataSource localDataSource() {        return DruidDataSourceBuilder.create().build();    }     @Bean(name = "localTransactionManager")    @Primary    public DataSourceTransactionManager mysqlTransactionManager() {        return new DataSourceTransactionManager(localDataSource());    }     @Bean(name = "localSqlSessionFactory")    @Primary    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(dataSource);        //如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()                .getResources("classpath*:mapper@Configurationpublic class PublicDataSourceConfig {     @Bean(name = "publicDataSource")    @ConfigurationProperties(prefix = "spring.datasource.public")    public DataSource publicDataSource() {        return DruidDataSourceBuilder.create().build();    }     @Bean(name = "publicTransactionManager")    public DataSourceTransactionManager mysqlTransactionManager() {        return new DataSourceTransactionManager(publicDataSource());    }     @Bean(name = "publicSqlSessionFactory")    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("publicDataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(dataSource);        //如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()                .getResources("classpath*:mapper2@ServletComponentScan@SpringBootApplication@EnableTransactionManagement@Enableswagger2@MapperScan(basePackages = "com.hiynn.core.**.mapper",sqlSessionFactoryRef = "localSqlSessionFactory")@org.mybatis.spring.annotation.MapperScan(basePackages = "com.hiynn.core.**.mapper2",sqlSessionFactoryRef = "publicSqlSessionFactory")public class Application extends SpringBootServletInitializer{    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

四、Mapper代码结构

tk-mybatis整合springBoot使用两个数据源的方法是什么

补充:

一、解决mybatis数据库驼峰命名自动映射问题以及sql语句打印问题,通过读取配置文件实现。两个数据源都需要设置

@Bean(name = "localSqlSessionFactory")    @Primary    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(dataSource);        //添加mybatis配置文件读取功能更        sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("mybatis-config.xml"));        //如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()                .getResources("classpath*:mapper/*.xml"));        return sessionFactory.getObject();    }
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "Http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <settings>        <setting name="mapUnderscoreToCamelCase" value="true" />        <!-- 打印查询语句 -->        <setting name="logImpl" value="STDOUT_LOGGING" />    </settings></configuration>

二、配置PageHelper分页插件,在application.properties统一配置

数据库方言 指定分页插件使用哪种数据库方言pagehelper.helperDialect=mysql#分页参数合理化 pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页pagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql

到此,关于“tk-mybatis整合springBoot使用两个数据源的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: tk-mybatis整合springBoot使用两个数据源的方法是什么

本文链接: https://www.lsjlt.com/news/300995.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • tk-mybatis整合springBoot使用两个数据源的方法是什么
    这篇文章主要介绍“tk-mybatis整合springBoot使用两个数据源的方法是什么”,在日常操作中,相信很多人在tk-mybatis整合springBoot使用两个数据源的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-21
  • tk-mybatis整合springBoot使用两个数据源的方法
    目录一、配置连接信息 二、配置DataSource数据源三、Application配置四、Mapper代码结构补充:根据项目功能需求,需要与第三方公共库对接,需要对公共库进行相关操作...
    99+
    2022-11-12
  • SpringBoot整合Mybatis Plus多数据源的实现方法是什么
    这篇文章主要讲解了“SpringBoot整合Mybatis Plus多数据源的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot整合Mybatis Plus多数...
    99+
    2023-06-25
  • Java SpringBoot整合JSP和MyBatis的方法是什么
    这篇文章主要介绍“Java SpringBoot整合JSP和MyBatis的方法是什么”,在日常操作中,相信很多人在Java SpringBoot整合JSP和MyBatis的方法是什么问题上存在疑惑,小编查阅了各式资料,...
    99+
    2023-07-05
  • springboot整合多数据源配置的方式是什么
    这篇文章将为大家详细讲解有关springboot整合多数据源配置的方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。简介主要介绍两种整合方式,分别是 springboot+mybati...
    99+
    2023-06-22
  • SpringBoot整合MybatisPlus配置多数据源增强插件的方法是什么
    本篇内容介绍了“SpringBoot整合MybatisPlus配置多数据源增强插件的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-06-02
  • sql两个表的数据合并相加方法是什么
    在SQL中,可以使用UNION ALL和SUM函数来实现两个表的数据合并相加。1. UNION ALL:将两个表的数...
    99+
    2023-09-15
    sql
  • SpringBoot结合Mybatis实现创建数据库表的方法是什么
    这篇文章跟大家分析一下“SpringBoot结合Mybatis实现创建数据库表的方法是什么”。内容详细易懂,对“SpringBoot结合Mybatis实现创建数据库表的方法是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后...
    99+
    2023-06-26
  • SpringBoot整合Ehcache实现热点数据缓存的方法是什么
    这篇文章主要介绍了SpringBoot整合Ehcache实现热点数据缓存的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Ehcache实现热点数据缓存的方法是什么文章都会有所收...
    99+
    2023-07-06
  • SpringBoot整合Quartz及异步调用的方法是什么
    这篇文章主要介绍“SpringBoot整合Quartz及异步调用的方法是什么”,在日常操作中,相信很多人在SpringBoot整合Quartz及异步调用的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • springcloud整合openfeign使用的方法是什么
    这篇文章主要介绍“springcloud整合openfeign使用的方法是什么”,在日常操作中,相信很多人在springcloud整合openfeign使用的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • python两个一维数组合成二维数组的方法是什么
    在Python中,可以使用zip()函数将两个一维数组合并成一个二维数组。zip()函数接受任意数量的可迭代对象作为参数,并返回一个...
    99+
    2023-09-06
    python
  • java两个integer数据判断相等的方法是什么
    本篇内容介绍了“java两个integer数据判断相等的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题案例来个简单点的例子pu...
    99+
    2023-06-22
  • Spring Cloud Alibaba整合Nacos使用的方法是什么
    今天小编给大家分享一下Spring Cloud Alibaba整合Nacos使用的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有...
    99+
    2023-07-05
  • SpringBoot自定义动态切换数据源的方法是什么
    本篇内容主要讲解“SpringBoot自定义动态切换数据源的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot自定义动态切换数据源的方法是什么”吧!1、添加maven依...
    99+
    2023-06-21
  • spring整合redis消息监听通知使用的方法是什么
    本篇内容介绍了“spring整合redis消息监听通知使用的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题引入在电商系统中,秒...
    99+
    2023-06-22
  • javascript两个函数相互调用防止死循环的方法是什么
    这篇文章主要介绍“javascript两个函数相互调用防止死循环的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript两个函数相互调用防止死循环的方法是什么”文章能帮助大家解...
    99+
    2023-07-05
  • 在ABAP里取得一个数据库表记录数的两种方法分别是什么
    本篇文章给大家分享的是有关在ABAP里取得一个数据库表记录数的两种方法分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。方法1:使用函数EM_GET_NUMBER_OF_...
    99+
    2023-06-04
  • Vue两个通信方式与动画过度及混入使用的方法是什么
    这篇文章主要介绍了Vue两个通信方式与动画过度及混入使用的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue两个通信方式与动画过度及混入使用的方法是什么文章都会有所收获,下面我们一起来看看吧。一、全...
    99+
    2023-07-05
  • Laravel使用多数据库的方法是什么
    这篇文章主要讲解了“Laravel使用多数据库的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel使用多数据库的方法是什么”吧!      ...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作