mybatis多資料來源配置_springboot+mybatis多資料來源配置(附原始碼,page helper分頁配置)...
阿新 • • 發佈:2020-12-17
技術標籤:mybatis多資料來源配置pagehelper分頁原理springboot mybatis配置springboot配置mybatis
測試的工作很大一部分時間都會花費在造測試資料上,尤其對於分散式系統。這種系統一般都是很多小組維護各自的模組,作為下游系統,如果要驗證一些業務流程,資料必須來自上游系統的真實資料,所以我們維護了一個幫助測試同事造數的平臺,這其中就涉及到 “多資料來源的配置”
mybatis工作原理
1. 建立SqlSessionFactoryBuilder物件,呼叫build(inputstream)方法讀取並解析配置檔案,返回SqlSessionFactory物件
2. 由SqlSessionFactory建立SqlSession 物件
3. 呼叫SqlSession中的api,傳入Statement Id和引數,最後呼叫jdbc執行SQL語句,封裝結果返回
例項
先配置兩個庫 teacher 、student
student.jdbc.url=jdbc:mysql://127.0.0.1:3306/student?serverTimezone=UTC&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNulljdbc.student.name=rootjdbc.student.password=root teacher.jdbc.url=jdbc:mysql://127.0.0.1:3306/teacher?serverTimezone=UTC&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNulljdbc.teacher.name=rootjdbc.teacher.password=root
這裡以student的Mybatis配置為例,
這裡需要注意多資料來源的配置需要指定的 主資料來源的,需要新增
@Primary,如果不配置主資料來源,啟動會報錯
@[email protected](basePackages = {"com.zl.demo.mapper.student"}, sqlSessionFactoryRef = "studentSqlSessionFactory")public class StudentMybatisConfig { @Autowired private AppConfigBean appConfigBean; @Bean(name = "studentDataSource") DataSource mockDataSource() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(appConfigBean.getStudentJdbcUrl()); dataSource.setDriverClassName(appConfigBean.getJdbcDriverClassName()); dataSource.setUsername(appConfigBean.getJdbcStudentName()); dataSource.setPassword(appConfigBean.getJdbcStudentPassword()); dataSource.setFilters("stat"); List initSqls = new ArrayList<>(); initSqls.add("set names utf8mb4"); dataSource.setConnectionInitSqls(initSqls); dataSource.setMaxActive(appConfigBean.getJdbcMaxActive()); dataSource.setInitialSize(appConfigBean.getJdbcInitialSize()); return dataSource; } @Bean(name = "studentSqlSessionFactory") @Primary public SqlSessionFactory studentSqlSessionFactory() throws SQLException { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(mockDataSource()); factoryBean.setTypeAliasesPackage("com.zl.deml.entity.student"); // 分頁外掛 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("reasonable", "false"); //properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("returnPageInfo", "check"); properties.setProperty("params", "pageNum=start;count=countSql"); pageHelper.setProperties(properties); // 新增外掛 factoryBean.setPlugins(new Interceptor[]{pageHelper}); // 新增XML目錄 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { factoryBean .setMapperLocations(resolver.getResources("classpath*:/mybatis/student/*.xml")); return factoryBean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean(name = "studentTransactionManager") public DataSourceTransactionManager studentTransactionManager() { try { return new DataSourceTransactionManager(mockDataSource()); } catch (SQLException e) { throw new RuntimeException(e); } }}
其中有一段是對pageHelper 分頁的配置,不需要的話可以刪除
測試資料
多資料來源整合測試資料
分頁的測資料
例項程式碼已上傳github
https://github.com/627886474/mybatis-multidata
如果對你有幫助的話
歡迎微信搜尋:可樂的測試之路