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-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除