0 1

纯mybatis对态切换库的问题25

我写了二个方法,帮忙看一下问题,写的有点发闷!谢了!多指出问题来!

SessionFactory

public class SessionFactory{
private static ThreadLocal<String> threadLocaldb = new ThreadLocal<String>();
private static String dbid= "development";
public static void setDbname(String dbname) {
threadLocaldb.set(dbname);
}
public static SqlSession getSession() {
if(threadLocaldb.get()==null){
threadLocaldb.set(dbid);
}
return DynamicDataSource.getSession(threadLocaldb.get());
}
public static void closeSession() {
DynamicDataSource.closeSession();
}
public static void closeDbname(){
threadLocaldb.set(null);
}
}
DynamicDataSource

public class DynamicDataSource {
private static Log log = LogFactory.getLog(DynamicDataSource.class);
private static String RESOURCE = "myBatis-config.xml";
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
private static Map<String,SqlSessionFactory> getSessionFactory=setsession();
public static Map<String,SqlSessionFactory> setsession(){
Map<String,SqlSessionFactory> sessionFactory=new HashMap<String, SqlSessionFactory>();
sessionFactory.put("development", getSessionFactory("development"));
sessionFactory.put("localhost", getSessionFactory("localhost"));
return sessionFactory;
}
public static Reader getResourceAsReader(){
Reader reader = null;
try {
reader = Resources.getResourceAsReader(RESOURCE);
} catch (IOException e) {
log.error(e.getMessage());
}
return reader;
}
public static SqlSessionFactory getSessionFactory(String environment) {

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(getResourceAsReader(),environment);
return sessionFactory;
}

public static SqlSession getSession(String environmentid) {
SqlSession session = threadLocal.get();
if (session == null) {
session = getSessionFactory.get(environmentid).openSession();
threadLocal.set(session);
return session;
}
return session;
}
public static void closeSession() {
SqlSession session = threadLocal.get();
if (session != null) {
threadLocal.set(null);
session.close();
}
}
}
调用的时候

SessionFactory.setDbname("development");
SessionFactory.closeDbname();
2013年9月09日 16:18
目前还没有答案

相关推荐

    mybatis+druid association 切换数据源

    本话题聚焦于"Mybatis+Druid Association 数据源切换",主要探讨在特定场景下如何解决Druid的DruidPooledStatement无法直接切换数据源的问题。 Druid是阿里巴巴开源的一个强大而全面的Java数据库连接池,它提供了...

    spring多数据源的处理_mybatis实现跨库查询

    "Spring 多数据源处理_Mybatis 实现跨库查询" 本文主要讨论了 Spring 框架中多数据源的处理方法,特别是使用 Mybatis 实现跨库查询。在大型应用中,为了提高系统的水平伸缩性,需要对数据进行切分,并且采用多个...

    mybatis+spring实现动态切换数据源

    在企业级应用开发中,动态数据源是一种常见需求,它允许程序在运行时根据不同的业务逻辑切换到不同的数据库。...在实际应用中,还需要考虑数据源的切换性能、事务的一致性以及在分布式环境下的协调等问题。

    Mybatis的切换数据库

    Mybatis 提供了这样的功能,可以通过传入参数的方式实现数据库的切换。 首先,我们需要理解Mybatis的配置文件(mybatis-config.xml)。在这个文件中,我们可以定义多个数据源,每个数据源对应一个数据库连接。例如...

    SpringBoot+Mybatis实现数据源动态切换

    springboot实现数据源动态切换 注意事项: 1. 该demo采用yml配置数据库信息,注意url标签为jdbc-url 2.项目中加了日志输出,可看到完整执行过程 3.在Service中应用事务时,自定义的注解将失效,解决办法:可将注解...

    Java+Springboot+mybatis+sharding jdbc 实现分库分表

    本项目基于Java、SpringBoot、MyBatis以及ShardingJDBC实现了一个分库分表的解决方案,旨在帮助开发者理解并掌握这一技术。以下是关于这些技术的详细介绍: **Java**: Java是一种广泛使用的面向对象的编程语言,...

    mybatis一对多的查询方法

    mybatis一对多的查询方法详解! mybatis一对多的查询方法详解! mybatis一对多的查询方法详解! mybatis一对多的查询方法详解!

    mybatis连接MySQL8出现的问题解决方法

    "mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...

    Spring MVC +Spring + Mybatis 构建分库分表源码

    在本资源中,我们主要探讨如何使用Spring MVC、Spring和Mybatis这三大流行框架来构建一个支持分库分表的应用。这些技术都是Java Web开发中的关键组件,它们各自承担着不同的职责并协同工作,以实现高效、可扩展的...

    springmvc+mybatis实现动态切换数据库

    完整的Demo结合了springmvc——mybatis,实现了工具类文件上传下载,结合了Redis的初步使用,并且能使用threadlocal实现数据库动态切换,很适合初建项目做参考,适合初学者使用。

    springboot+mybatis动态切换数据源完整项目架构

    本项目"springboot+mybatis动态切换数据源完整项目架构"正是针对这种需求提供的一种解决方案,它支持MySQL和Oracle数据库,使得开发者可以轻松地在两者之间进行数据源的切换,以适应不同的业务场景。 首先,我们要...

    Mybatis分库分表扩展插件

    分库分表插件主要工作在SQL路由阶段,根据特定的规则(如哈希、范围等)对原始SQL进行修改,添加分片信息,确保数据能正确地分布到不同的库表中。 三、实现分库分表插件的关键步骤 1. **创建拦截器类**:实现`org....

    mybatis demo mybatis 实例

    4. 缓存机制:MyBatis内置了本地缓存和二级缓存,能够提高数据读取效率,减少对数据库的访问。 5.事务管理:MyBatis支持手动和自动的事务管理,可以根据不同的业务需求选择合适的事务控制策略。 6. 与其他框架的...

    SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询.pdf

    在SpringBoot项目中,整合Mybatis-Plus并实现多数据源的动态切换,同时支持分页查询是一项常见的需求。以下将详细阐述这个过程中的关键步骤和技术要点。 首先,我们需要引入必要的Maven依赖。这里提到了四个关键...

    mybatis_jar包

    8. 强大的社区支持:Mybatis 有着广泛的用户基础和活跃的社区,遇到问题可以得到及时的解答和帮助。 在使用Mybatis时,我们需要配置Mybatis的核心配置文件(mybatis-config.xml),其中包含数据源、事务管理器、...

    mybatis小练习

    它可以处理一对一、一对多、多对一、多对多等各种复杂关系,甚至支持自定义类型处理器,以满足各种数据类型转换的需求。 通过这些练习,你将学习如何使用MyBatis进行数据库操作,包括编写和执行SQL、管理配置、处理...

    使用springboot + JPA / MyBatis 实现多数据源动态切换

    本教程将详细讲解如何使用Spring Boot结合JPA或MyBatis框架实现多数据源的动态切换。 **一、Spring Boot与JPA** 1. **Spring Boot简介**:Spring Boot是Spring Framework的一个模块,旨在简化Spring应用的初始搭建...

    mybatis 对clob类型转换

    在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨MyBatis中处理CLOB类型数据的转换以及解决可能出现的异常情况。 首先,MyBatis是Java中的一...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    本篇将深入探讨如何在Spring Boot项目中整合Mybatis,实现对SQL Server数据库的跨库批量插入操作。 首先,我们需要在Spring Boot项目中引入相关的依赖。对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot ...

    Springboot整合Druid与Mybatis的多数据源切换

    本教程将详细介绍如何在Spring Boot项目中整合Druid数据源池与Mybatis,实现多数据源切换的功能,并提供一个亲测可用的解决方案。 首先,让我们了解Spring Boot、Druid和Mybatis这三大组件的基础知识: **Spring ...

Global site tag (gtag.js) - Google Analytics