二.八 测试
二.八.一 创建测试类
@SpringBootTest @RunWith(SpringJUnit4ClassRunner.class) @Log4j2 public class MyBatisTests { @Autowired private UserService userService; @Autowired private DeptService deptService; @Test public void addUserTest(){ //1. 构建对象 User user=new User(); user.setName("欢欢"); user.setAge(22); user.setSex("女"); user.setDescription("一个非常可爱的女孩纸"); //2. 添加方法 userService.addUser(user); log.info("添加员工成功"); } @Test public void listUserTest(){ List<User> userList=userService.listUser(); userList.forEach(n->log.info(n)); } @Test public void addDeptTest(){ //1. 构建对象 Dept dept=new Dept(); dept.setName("信息管理部"); //2. 添加方法 deptService.addDept(dept); log.info("添加部门成功"); } @Test public void listDeptTest(){ List<Dept> deptList=deptService.listDept(); deptList.forEach(n->log.info(n)); } /** * 数据源切换配置 */ @Test public void allDataSourceTest(){ addUserTest(); listDeptTest(); addDeptTest(); listUserTest(); } }
二.八.二 测试数据源
数据库源1
添加
查询
数据库 springboot 的 user 表里面,也只存储了这一条
数据源2
添加
查询
数据库 springboot2 的 dept 表里面,也只存储了这一条数据
数据源切换配置 测试
再次查询数据库表
数据源切换配置成功.
二.九 解决日志失效的问题
原因: 我们配置多数据源时,重新定义了 SqlSessionFactory.
如果需要打印的话,在配置SqlSessionFactory 时,添加 MyBatisProperties
经老蝴蝶测试, 发现配置日志时,只能配置在从数据库 即 dataSourceTwo 数据库上面。
sqlSessionFactoryOne 保持不变。
二.九.一 只能配置到 从数据源 dataSourceTwo
/** * 创建SqlSessionFactory 对象 */ @Bean(name="sqlSessionFactoryTwo") //引入参数 MyBatisProperties,用于解决日志失效的问题 public SqlSessionFactory sqlSessionFactoryTwo(MybatisProperties mybatisProperties){ try{ SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSourceTwo); //设置mapper配置文件 sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION)); // 将 mybatis的配置,传递过来。 sqlSessionFactoryBean.setConfiguration(mybatisProperties.getConfiguration()); return sqlSessionFactoryBean.getObject(); }catch (Exception e){ e.printStackTrace(); return null; } } //省略了事务的配置 /** * 通过SqlSessionFactory 创建 SqlSessionTemplate * @return */ //引入参数 MyBatisProperties,用于解决日志失效的问题 @Bean(name="sqlSessionTemplateTwo") public SqlSessionTemplate sqlSessionTemplate(MybatisProperties mybatisProperties){ return new SqlSessionTemplate(sqlSessionFactoryTwo(mybatisProperties)); }
此时再次进行操作的话, 做查询操作
本章节的代码放置在 github 上: