在实际的开发中,同一个项目中使用多个数据源是很常见的场景。最近在学习的过程中使用注解的方式实现了一个Springboot项目多数据源的功能。具体实现方式如下。
2.在application.properties中添加多数据源配置添加多个数据源和mapper文件路径配置,此配置用于基于java的配置数据源中使用。
#数据库配置spring.datasource.demo.user.url=jdbc:mysql://xxx.xx.xx.xx:3306/demo-userspring.datasource.demo.user.username=xxxx spring.datasource.demo.user.password=xxxx spring.datasource.demo.user.driver-class-name=com.mysql.jdbc.Driver spring.datasource.demo.server.url=jdbc:mysql://xxx.xx.xx.xx:3306/springbootdemospring.datasource.demo.server.username=xxxx spring.datasource.demo.server.password=xxxx spring.datasource.demo.server.driver-class-name=com.mysql.jdbc.Driver#mapper文件的路径mybatis.demo.server.mapper-location=classpath*:mapper/demo-server Listlist(); }
mapper文件如下:
SELECT `name` FROM `user`
定义读取springbootdemo数据库的接口,代码如下。使用DemoServerMapper注解表识
@DemoServerMapperpublic interface DictionaryDao {
List list();
List listChildrenByKey(String key);
void insert(Dictionary dictionary);
} mapper文件代码如下:
5.定义注解
定义DemoUserMapper和DemoServerMapper注解,分别作为使用demo-user和springbootdemo数据库的表识。
定义代码如下:
@documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Component@Mapperpublic @interface DemoServerMapper {
String value() default "";
}@documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Component@Mapperpublic @interface DemoUserMapper {
String value() default "";
}6.使用单元测试验证配置编写单元测试代码如下:
@RunWith(SpringRunner.class)@SpringBootTestpublic class MultiDatasourceApplicationTests {
@Autowired
private DictionaryDao dictionaryDao; @Autowired
private UserDao userDao; @Test
public void contextLoads() {
System.out.println(dictionaryDao.list());
System.out.println("===================");
System.out.println(userDao.list());
}
}原文出处



