Справочная информация: Компания хочет создать новый элемент данных, потому что вы хотите запросить данные из нескольких источников данных, и не делал до того, как проект создания заметок, на этот раз, чтобы сделать запись. Из коробки, вкусно Внимание!
Построение процесса столкнулись с некоторыми проблемами, мы будем шаг инструкции. Код Адрес: https://gitee.com/aaron_qc/multi-datasource.git
- Сначала на основной курс. Конфигурация источника данных Многоступенчатая
- Введение в зависимую tkmapper + друид + MySQL + пружинные загрузки-конфигурации-процессор
-
<зависимость> <идентификатор_группы> org.springframework.boot </ идентификатор_группы> <артефакта> весна-загрузки конфигурации процессоров </ артефакта> <версия> 2.1.5.RELEASE </ версия> </ зависимость> <! - MySQL и mybatis и т.д. -> <зависимость> <идентификатор_группы> tk.mybatis </ идентификатор_группы> <артефакта> картограф-весна-загрузка-стартер </ артефакт> <версия> 2.1.4 </ версия> </ зависимость> <зависимость> <идентификатор_группы> MySQL </ идентификатор_группы> <артефакта> MySQL-разъем-Java </ артефакта> <версия> 8.0.11 </ версия> </ зависимость> <! - друид -> <зависимость> <идентификатор_группы> com.alibaba </ идентификатор_группы> <артефакта> друид-весна-загрузка-стартер </ артефакт> <версия> 1.1.10 </ версия> </ зависимость>
-
- Конфигурация выглядит следующим образом
- Начало класса плюс @EnableConfigurationProperties.
- OceanApplication
/ ** * @author QuCheng на 2019-09-16. * EnableConfigurationProperties使@ConfigurationProperties注解的类(需要加@Component)生效. * / @EnableConfigurationProperties @SpringBootApplication общественного класса OceanApplication { государственной статической силы основных (String [] агдз) { SpringApplication.run (OceanApplication.class, арг); } }
- OceanApplication
- YML настроить свойства
- application.yml атрибут пользовательского имени, и только соответствует соответствующему классу Java
Друид: # источник данных конфигурации пользователя: корень пароль: XXXX driverClass: com.mysql.cj.jdbc.Driver # Min Max инициализации initialSize :. 5 minIdle :. 5 для maxActive: 20, testOnBorrow: ложному urlIceberg: JDBC: MySQL: //106.12.176.120 ? / айсбергов serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = когда ложь # установите часовой пояс urlOcean: JDBC: MySQL: //106.12.176.120/ocean serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = когда ложь # установить часовой пояс? urlAccount: JDBC: MySQL : //106.12.176.120/account serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = ложь # установить часовой пояс
- application.yml атрибут пользовательского имени, и только соответствует соответствующему классу Java
- Пользовательские свойства родительского класса нагрузки BaseProperty
- Отображение конфигурации YML.
пакет com.hb.ocean.druid; импорт com.alibaba.druid.pool.DruidDataSource; импорт lombok.Data; импорт org.springframework.boot.context.properties.ConfigurationProperties; импорт org.springframework.stereotype.Component; импорт javax.sql.DataSource; / ** * DataSource базовый класс * @author qucheng * / @data @ConfigurationProperties (префикс = "друид") @Component класс BaseProperty { защищен пользователем строка; защищенный Строка пароля; защищенные Струнные driverClass; защищенный INT initialSize; защищенный INT maxActive; защищенный INT minIdle; защищенный булево testOnBorrow; защищенный Строка urlAccount; защищенная Строка urlOcean; защищенный Строка urlIceberg; DataSource createDataSource (String URL) { DruidDataSource DataSource = новый DruidDataSource (); dataSource.setDriverClassName (driverClass); dataSource.setUrl (URL); dataSource.setUsername (пользователь); dataSource.setPassword (пароль); dataSource.setInitialSize (initialSize); dataSource.setMaxActive (maxActive); dataSource.setMinIdle (minIdle); dataSource.setTestOnBorrow (testOnBorrow); вернуться DataSource; } }
- Отображение конфигурации YML.
- Их соответствующие источники данных карты конфигурации пути (интерфейсы Mapper + XML-файл)
- Путь конфигурации - две другие конфигурации будут опущены
com.hb.ocean.druid пакет; Импорт org.apache.ibatis.session.SqlSessionFactory; Импорт org.mybatis.spring.SqlSessionFactoryBean; Импорт org.springframework.beans.factory.annotation.Qualifier; Импорт org.springframework.context.annotation .Bean; Импорт org.springframework.core.io.support.PathMatchingResourcePatternResolver; Импорт org.springframework.jdbc.datasource.DataSourceTransactionManager; Импорт org.springframework.stereotype.Component; Импорт tk.mybatis.spring.annotation.MapperScan; Импорт javax. sql.DataSource; / ** * Счет DataSource * MapperScan (использовать имя таблицы сопоставление сущностей ок) аннотации для связывания пакетов и сканирование указанного источника данных, и указанного процесса сопоставителя каталогов без добавления аннотаций * * @ qucheng автор * / @Component @MapperScan (basePackages = "com.hb.ocean.mapper.account", sqlSessionFactoryRef = "accountSqlSessionFactory") общественный класс AccountConfig расширяет BaseProperty { @Bean (имя = "accountDataSource") общественный DataSource createDataSource () { вернуться createDataSource (urlAccount ); } @Bean (имя = "accountTransactionManager") общественного DataSourceTransactionManager accountTransactionManager () { вернуть новый DataSourceTransactionManager (createDataSource ()); } @Bean (имя = "accountSqlSessionFactory") общественного SqlSessionFactory masterSqlSessionFactory (@Qualifier ( "accountDataSource") DataSource accountDataSource) бросает исключение { конечная SqlSessionFactoryBean SessionFactory = новый SqlSessionFactoryBean (); sessionFactory.setDataSource (accountDataSource); Строка mapperLocation = "путь к классам:. Картограф / счет / * XML"; sessionFactory.setMapperLocations (новый PathMatchingResourcePatternResolver () .getResources (mapperLocation)); вернуть sessionFactory.getObject (); } }
- Путь конфигурации - две другие конфигурации будут опущены
- Создайте файл в соответствующем каталоге. Проект будет загружен при запуске.
- Структура фиг.
- Структура фиг.
- Начало класса плюс @EnableConfigurationProperties.
- После успешного запуска результатов испытаний являются
- Тестирование кода
com.hb.ocean.controller пакет; Импорт com.hb.ocean.mapper.account.UserMapper; Импорт com.hb.ocean.mapper.iceberg.ItemOrderMapper; Импорт org.springframework.web.bind.annotation.GetMapping; Импорт ORG .springframework.web.bind.annotation.RequestMapping; Импорт org.springframework.web.bind.annotation.RestController; Импорт javax.annotation.Resource; / ** . * @author QuCheng ON 2019-09-17 * / @RestController @ @RequestMapping ( «/ КК») общественный класс TestView { / ** * не рекомендуется слой ДАО непосредственно вводить в слой контроллера. Вот только продемонстрировать использование * / @Resource Private UserMapper UserMapper; @Resource частный ItemOrderMapper itemOrderMapper; @GetMapping ( "/ тест") тест общественного String () { System.out.println ( "用户数:" + userMapper.selectCountUser (NULL, NULL)); System.out.println ( "订单数:" + itemOrderMapper.selectCountSuccessOrder (NULL, NULL)); вернуться «ОК»; } }
- Результаты испытаний
- Тестирование кода
- Введение в зависимую tkmapper + друид + MySQL + пружинные загрузки-конфигурации-процессор
Некоторые вопросы возникают также в течение процесса
- Множество источников данных YML разделяют базовую конфигурацию, в дополнение к источнику данных URL несовместимым.
- Пользовательские элементы конфигурации необходимо YML свойство
- 引入 весенне-загрузки конфигурации процессор.
- Класс Start использует аннотации @EnableConfigurationProperties
- Синтаксический класс 3, чтобы ввести в вышеуказанный комментарий @data только для удобства. @ConfigurationProperties (префикс = «Друид») задаются следующим образом: «друид» начинает свойство. @Component представлено управление контейнером
- класс конфигурации @MapperScan аннотация используется tk.mybatis.spring.annotation.MapperScan комментария. org.mybatis.spring.annotation.MapperScan также может быть использован, но он не может быть использован в сочетании @Table карты аннотаций.
Процесс springboot конфигурации нескольких источников данных, как описано выше. Это демо-версия. Кроме того, относится к практическому применению данных
- эврика открытие регистрации. Начните введение класса нот
- симулировать вызовы интерфейсов и не запал
- Элегантно простой процесс завершения работы
- чванство документ
- Redis Distributed Transaction