🏆Эта статья включена в 《Spring Загрузка из входа в мастер》 ,Улучшение индекса специализированной атаки
Эта колонка посвящена созданию самой сложной серии обучающего контента Spring Boot от нулевого уровня до продвинутого уровня. 🚀Все они запускаются исключительно во всей сети для создания качественных колонок... Колонка постоянно обновляется... Добро пожаловать всем. подписывайтесь и продолжайте учиться.
Описание среды: Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
В этой статье будет показано, как использовать mybatis-plus для реализации конфигурации с несколькими источниками данных в рамках Spring Boot. Конфигурация нескольких источников данных является общим требованием и часто встречается в реальных проектах, поэтому очень важно овладеть навыками настройки нескольких источников данных.
В этой статье мы покажем, как использовать Spring Boot и mybatis-plus реализуют конфигурацию с несколькими источниками данных. О том, как настроить, мы расскажем отдельно. нескольких источников данных и как использовать mybatis-plus для работы с этими источниками данных. В дополнение к этому мы также дадим простой тест. пример для проверки правильности кода.
Сначала нам нужно добавить зависимости в файл pom.xml:
<!--Настройка нескольких источников данных-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
Пример скриншота выглядит следующим образом:
Весной Настройка под Boot framework нескольких источников данных Просто нужно быть внутриapplication.propertiesПросто добавьте в файл конфигурацию нескольких наборов источников данных.。Например,Настраиваем два источника данных,Для db1 и db2 соответственно:
spring:
datasource:
dynamic:
primary: master #Установите источник данных или группу источников данных по умолчанию, значение по умолчанию — master.
strict: false #Строго соответствовать источнику данных, по умолчанию false. true выдает исключение, если указанный источник данных не соответствует, false использует источник данных по умолчанию
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver # Эту конфигурацию можно опустить, поскольку версия 3.2.0 поддерживает SPI.
url: jdbc:mysql://localhost:3306/springboot_db?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
slave_1:
driver-class-name: com.mysql.cj.jdbc.Driver # Эту конфигурацию можно опустить, поскольку версия 3.2.0 поддерживает SPI.
url: jdbc:mysql://127.0.0.1:3306/test_db2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
В приведенной выше конфигурации мы настроили URL-адрес, имя пользователя и пароль для двух источников данных соответственно. Следует отметить, что мы используем разные имена баз данных в URL-адресах, чтобы различать разные источники данных.
Пример скриншота выглядит следующим образом:
существовать Настройка mybatis-plusначальство,Нам нужно создать классы конфигурации для двух источников данных.,Это db1 и db2 соответственно. Эти два класса конфигурации должны наследовать AbstractDataSourceConfig соответственно.,Вам необходимо инициализировать SqlSessionFactory и MapperScannerConfigurer mybatis-plus, используя аннотацию @MapperScan.
Здесь мы приводим пример кода источника данных db1:
@Configuration
@MapperScan(basePackages = {"com.example.db1.mapper"}, sqlSessionTemplateRef = "db1SqlSessionTemplate")
public class Db1DataSourceConfig extends AbstractDataSourceConfig {
@Autowired
@Qualifier("db1DataSource")
private DataSource db1DataSource;
@Bean(name = "db1SqlSessionFactory")
public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
return super.createSqlSessionFactory(dataSource);
}
@Bean(name = "db1SqlSessionTemplate")
public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Override
public DataSource dataSource() {
return db1DataSource;
}
@Override
public MybatisPlusProperties getMybatisPlusProperties() {
MybatisPlusProperties properties = new MybatisPlusProperties();
properties.setMapperLocations(new String[]{"classpath:mapper/db1/**/*.xml"});
return properties;
}
}
В приведенном выше коде мы используем аннотацию @MapperScan для сканирования интерфейса Mapper в указанном каталоге и указываем имя SqlSessionFactory, используемое SqlSessionTemplate (т. е. «db1SqlSessionFactory»). Мы также указали путь к файлу Mapper в конфигурации.
Аналогично, при настройке источника данных db2 нам нужно изменить только соответствующие имена.
При использовании Написать интерфейс Mapper нам необходимо указать используемый источник данных. Мы можем указать источник данных, используемый выполняемым в данный момент методом, добавив аннотацию @DS в интерфейс Mapper. Например:
@DS("db1")
public interface UserMapperDb1 extends BaseMapper<User> {
//...
}
@DS("db2")
public interface UserMapperDb2 extends BaseMapper<User> {
//...
}
В приведенном выше коде мы написали интерфейс UserMapper для источников данных db1 и db2 соответственно и указали источник данных, который будет использоваться, через аннотацию @DS.
Наконец, мы пишем простой тест для нашего кода. пример для проверки правильности кода. Мы можем протестировать В примере @Autowired используется для внедрения указанного интерфейса Mapper для управления соответствующим источником данных. Например:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MultiDataSourceTest {
@Autowired
private UserMapperDb1 userMapperDb1;
@Autowired
private UserMapperDb2 userMapperDb2;
@Test
public void test() {
User user1 = new User();
user1.setName("Чжан Сан");
user1.setAge(18);
userMapperDb1.insert(user1); // Сохранить в db1
User user2 = new User();
user2.setName("Ли Си");
user2.setAge(20);
userMapperDb2.insert(user2); // Сохранить в db2
List<User> userList1 = userMapperDb1.selectList(null);
List<User> userList2 = userMapperDb2.selectList(null);
Assert.assertEquals(userList1.size(), 1); // В db1 должна быть 1 запись
Assert.assertEquals(userList2.size(), 1); // В db2 должна быть 1 запись
}
}
существоватькначальствотестовый примерсередина,Мы использовали два интерфейса Mapper для вставки записи в источники данных db1 и db2 соответственно.,А затем использовал два интерфейса Mapper для запроса количества записей в соответствующих источниках данных.
В этой статье объясняется, как Весной Используйте mybatis-plus в среде загрузки для реализации конфигурации с несколькими источниками данных. В частности, мы отдельно покажем, как Настройка нескольких источников данных、как Настройка mybatis-plus и как Написать интерфейс Mapperитестовый пример。Практика доказывает,Конфигурация с несколькими источниками данных очень распространена в реальных бизнес-сценариях.,Узнайте из этой статьи,Читатели смогут освоить навыки настройки нескольких источников данных.,Это также будет большим подспорьем для будущей работы по разработке проекта.
ЯсуществоватьучаствоватьВторой этап специального тренировочного лагеря Tencent Technology Creation 2023 года включает в себя эссе, получившие призы, которые разделят призовой фонд в 10 000 юаней и часы с клавиатурой.