Проект dk-foundation
Spring — это инструмент быстрой разработки, который автоматически интегрирует MyBatis, Sharding-JDBC и Redis.
В соответствии с принципом «соглашение важнее конфигурации» модули проекта должны называться com.dk.*.worker, где * — произвольный символ. Это позволит Spring автоматически сканировать соответствующие пакеты и внедрять bean-компоненты, обеспечивая начальные возможности проекта.
@ComponentScan(basePackages = "com.dk.foundation.common,com.dk.foundation.engine,com.dk.*.mapper,com.dk.*.service,com.dk.*.worker")
public class EngineConfig {
}
Чтобы добавить зависимости проекта, используйте следующий код:
<dependency>
<groupId>com.dk.foundation</groupId>
<artifactId>dk-foundation-engine-declare-datasource</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Для предоставления проекту начальных возможностей добавьте в файл запуска @EnableEngineStart, как показано ниже:
@MapperScan("com.dk.test.*.mapper")
@EnableEngineStart
public class Startup {
public static void main(String[] args) throws Exception {
SpringApplication.run(Startup.class, args);
}
}
Способ 1: DynamicDataSourcePlugin
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<plugin interceptor="com.dk.foundation.engine.DynamicDataSourcePlugin" />
</plugins>
</configuration>
Плагин определяет, является ли SQL-скрипт оператором вставки, обновления или удаления, и автоматически выбирает основной источник данных. Если это запрос, он случайным образом выбирает источник данных для чтения. При включённой транзакции он выбирает источник данных на основе транзакции.
Способ 2: аннотация @DataSource
@DataSource(name="master")
public List<User> selectListBySQL()
{
List<User> users = userMapper.selectListBySQL();
return users;
}
Если вы используете DynamicDataSourcePlugin вместе с аннотацией @DataSource, будет выбран источник данных, указанный в аннотации.
@Transactional
@DataSource(name="db_slave_0")
public void insert()
{
List<User> users = userMapper.selectListBySQL();
for (User user:users
) {
user.setName(user.getName()+"_testInsert");
userMapper.insert(user);
}
}
При использовании DynamicDataSourcePlugin и аннотации @DataSource одновременно и при включенной транзакции, для userMapper.selectListBySQL(), DynamicDataSourcePlugin и аннотация @DataSource выбирают источник данных. Для userMapper.insert(user), DynamicDataSourcePlugin выбирает основной источник данных, но фактически используется основной источник данных из-за включенной транзакции. Транзакция имеет наивысший приоритет.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )