shardingsqlsessionfactory 如何支持动态切换数据源
时间: 2023-05-08 07:58:19 浏览: 59
Shardingsqlsessionfactory是Sharding-JDBC中的一个关键组件,它是一个SqlSessionFactory的实现类,并且支持动态切换数据源。具体实现方式如下:
首先,Shardingsqlsessionfactory提供了一个setter方法,用于设置Sharding-JDBC的数据源。当调用该方法后,Shardingsqlsessionfactory会将数据源注入到其内部的DefaultSqlSessionFactory中。
其次,Shardingsqlsessionfactory中还定义了一个依赖于数据源的ExecutorType枚举类型。该枚举类型有两个值,一个是SIMPLE(普通的执行器),另一个是REUSE(可重用的执行器)。当使用SIMPLE执行器时,每次执行操作都会创建一个新的SqlSession对象。而使用REUSE执行器时,每次操作都会使用已经存在的SqlSession对象。
最后,在应用程序中,可以通过调用Shardingsqlsessionfactory中的getSqlSession方法来获得SqlSession对象。并且,可以使用该方法重载来动态切换数据源,具体方式如下:
通过调用getSqlSession(true)方法,可以获得可重用的SqlSession对象,并且该对象的数据源与当前设置的数据源一致。
通过调用getSqlSession(false)方法,可以获得非重用的SqlSession对象,并且该对象的数据源与当前设置的数据源一致。
通过调用getSqlSession(ExecutorType.SIMPLE)方法,可以获得非重用的SqlSession对象,并且该对象的数据源与当前设置的数据源一致,并且使用SIMPLE执行器。
综上所述,Shardingsqlsessionfactory支持动态切换数据源的方式是,在切换数据源时,调用setDataSource方法将新的数据源注入到Shardingsqlsessionfactory中,然后通过调用getSqlSession方法,传递参数设置SqlSession对象的执行器和可重用性,即可获得对应的SqlSession对象,并且该对象的数据源与当前设置的数据源一致。