Mybatis-SqlSessionFactory/多数据源

2024-01-25 20:12

本文主要是介绍Mybatis-SqlSessionFactory/多数据源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面的代码演示了发送一个HTTP请求到Controller,如果key=“dev”,则查询dev数据库,否则查询默认的数据库

	@Resourceprivate SqlSessionFactory sqlSessionFactory;@Resourceprivate DataSource defaultDataSource;@Resourceprivate XXXMapper xxxMapper;@PostMapping("test")public Object test(@RequestParam("key") String key) {if (key.equals("dev")) {HikariDataSource devDataSource= new HikariDataSource();devDataSource.setJdbcUrl("jdbc:mysql://123.456.789:3306/数据库名?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true");devDataSource.setUsername("帐号");devDataSource.setPassword("密码");Environment environment = new Environment.Builder("dev").dataSource(devDataSource).transactionFactory(new JdbcTransactionFactory()).build();sqlSessionFactory.getConfiguration().setEnvironment(environment);} else {Environment environment = new Environment.Builder("default").dataSource(defaultDataSource).transactionFactory(new JdbcTransactionFactory()).build();sqlSessionFactory.getConfiguration().setEnvironment(environment);}// 这里执行sqlreturn xxxMapper.xxx方法();}

好了,文章到此结束,但是实际开发中,你需要对这段代码进行下面的优化
1.本文是全局修改数据源,如果是那种主从的系统(insert主库,select从库),则需要使用多个SqlSessionFactory
2.毕竟我是以硬编码的方式切换的数据源,每次切换,我都new了一个Environment ,实际开发中,一般都是通过ThreadLocal或者注解的方式,切换数据源

下面两个内容也是需要记住的:
1.Mybatis的SqlSessionFactory或者SqlSessionTemplate是一直持有DataSource引用的,所以直接修改这两个对象的DataSource即可
2.没必要写各种注解,各种@Bean的方式

如果想深入了解Spring对多数据源的支持,可查看AbstractRoutingDataSource,或许对你也有所启发

这篇关于Mybatis-SqlSessionFactory/多数据源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644478

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

SpringBoot利用dynamic-datasource-spring-boot-starter解决多数据源问题

《SpringBoot利用dynamic-datasource-spring-boot-starter解决多数据源问题》dynamic-datasource-spring-boot-starter是一... 目录概要整体架构构想操作步骤创建数据源切换数据源后续问题小结概要自己闲暇时间想实现一个多租户平台,

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景