千家信息网

Mybatis实现分包定义数据库的原理与过程是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"Mybatis实现分包定义数据库的原理与过程是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我
千家信息网最后更新 2026年11月02日Mybatis实现分包定义数据库的原理与过程是什么

这篇"Mybatis实现分包定义数据库的原理与过程是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Mybatis实现分包定义数据库的原理与过程是什么"文章吧。

    前言

    业务需求中需要连接两个数据库处理数据,需要用动态数据源。通过了解mybatis的框架,计划 使用分包的方式进行数据源的区分。

    原理

    前提:

    我们使用mybatis都会有四个步骤

    1:构建SqlSessionFactory

    2:通过SqlSessionFactory 获取到sqlSession 对象

    3:通过sqlSession对象获取Mapper的动态代理对象

    4:通过执行动态代理对象获取返回值

    其实点开sqlSessionFactory就的Configuration对象中的Environment对象绑定了我们的dataSource对象

    同样,我们通过debug发现,动态代理后的mapper对象是同样持有Configuration对象,绑定我们的连接信息。

    猜想

    需要分包实现不同数据源的话,需要对不同的mapper指定不同的sqlSessionFactroy,查看mapperScan的注解源码,

    通过理解注释,我们是可以指定maper动态代理对象的sqlSessionFactory对象的。然后结果basePackages就可以对不同的包使用不同的sqlSessionFactory从而实现不同包使用不同的数据源。

    实现

    1:定义两个数据源

    两个数据源分别命名位ds01,ds02,这里采用都是德鲁伊的数据库连接池。为了简介,详细配置没有展示了。

    2:定义两个SqlSessionFactory

    定义两个sqlSessionFactory,分别绑定两个数据源。

    3:不同包实现绑定不同的sqlSessionFactory

    通过@MapperScan指定扫描的包,通知指定SqlSessionFactory

    @MapperScan(basePackages = "com.lenven.demo.dao.ds02",sqlSessionFactoryRef = "salveSqlSessionFactory")@MapperScan(basePackages = "com.lenven.demo.dao.ds01",sqlSessionFactoryRef = "masterSqlSessionFactory")

    4:测试

    对两个不同的包的mapper测试,都可以正确查询出数据

    拓展:

    通过实现

    AbstractRoutingDataSource也可以实现动态数据源。

    该类实现DataSource的接口,可以配置对各数据源在

     @Nullable    private Map resolvedDataSources;

    这个属性里面。

    让后通过暴露一个determineCurrentLookupKey 获取需要使用的数据源的key。但是需要注意事务的问题。

    以上就是关于"Mybatis实现分包定义数据库的原理与过程是什么"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

    数据 对象 不同 数据源 两个 动态 数据库 内容 原理 代理 过程 文章 步骤 知识 篇文章 测试 配置 业务 事务 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 南京欣网互联网络科技 有格互联网科技 湖北九亚互联网络科技有限公司 互联网电商科技 互联网中国科技 碳银互联网科技有限公司 彤创互联网科技有限公司 链环科技传统企业怎么转型互联网 华夏恒生互联网科技013171 洛阳共同富裕互联网科技有限公司 杭州披云加互联网科技有限公司 四川互联网展示科技馆设计 世界互联网科技成果奖 银川新华互联网科技学校是国营吗 云南互联网科技学费 安徽零酒互联网科技有限公司 数字互联网科技有限公司 数字科技和互联网金融哪个好 10位科技互联网大佬 互联网络科技 广州为想互联网科技有限公司 广州淘业互联网络科技 科技互联网龙头 金融科技创新监管互联网金融 银川新华互联网科技职业技术培训学校图片 本届互联网博览会上的黑科技 江苏互联网智能科技软件 科技互联网公司两年变化 保山浩联互联网科技有限公司
    0