您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Jspxcms支持多數(shù)據(jù)源嗎”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Jspxcms支持多數(shù)據(jù)源嗎”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
首先要確定多數(shù)據(jù)源是指什么。
如果多數(shù)據(jù)源是指系統(tǒng)中的表分別放到不同數(shù)據(jù)庫里(比如,欄目表cms_node放到A數(shù)據(jù)庫,文章表cms_info放到B數(shù)據(jù)庫),這種情況是不支持的。
如果是系統(tǒng)中的表放到一個(gè)數(shù)據(jù)庫里,但還希望通過二次開發(fā)從其它數(shù)據(jù)庫里讀取一些數(shù)據(jù),這種情況是可以的。
Jspxcms系統(tǒng)中使用的框架是spring-boot、spring-data-jpa。本質(zhì)上說,是否支持多數(shù)據(jù)源只和這些框架有關(guān),和系統(tǒng)本身無關(guān)。spring-boot官方文檔里有介紹多個(gè)數(shù)據(jù)源的配置方法 https://docs.spring.io/spring-boot/docs/1.5.20.RELEASE/reference/htmlsingle/#howto-two-datasources ,網(wǎng)上也有大量的教程。
配置文件src/main/resources/application.properties。
將默認(rèn)數(shù)據(jù)庫配置的spring.datasource前綴改為app.datasource.first,另外再創(chuàng)建第二個(gè)數(shù)據(jù)源app.datasource.second。
#spring.datasource.url=jdbc:mysql://localhost/jspxcms?characterEncoding=utf8 #spring.datasource.username=root #spring.datasource.password=password #spring.datasource.driver-class-name=com.mysql.jdbc.Driver app.datasource.first.url=jdbc:mysql://localhost/jspxcms?characterEncoding=utf8 app.datasource.first.username=root app.datasource.first.password=password app.datasource.first.driver-class-name=com.mysql.jdbc.Driver app.datasource.second.url=jdbc:mysql://localhost/second_database?characterEncoding=utf8 app.datasource.second.username=root app.datasource.second.password=password app.datasource.second.driver-class-name=com.mysql.jdbc.Driver
在Java配置文件中增加數(shù)據(jù)源配置代碼com.jspxcms.core.Application。第二個(gè)數(shù)據(jù)源使用JdbcTemplate訪問數(shù)據(jù)。
@Bean @Primary @ConfigurationProperties("app.datasource.first") public DataSourceProperties dataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary @ConfigurationProperties("app.datasource.first") public DataSource dataSource() { return dataSourceProperties().initializeDataSourceBuilder().build(); } @Bean @ConfigurationProperties("app.datasource.second") public DataSourceProperties secondDataSourceProperties() { return new DataSourceProperties(); } @Bean @ConfigurationProperties("app.datasource.second") public DataSource secondDataSource() { return secondDataSourceProperties().initializeDataSourceBuilder().build(); } @Bean public JdbcTemplate jdbcTemplate() { return new JdbcTemplate(secondDataSource()); }
至此多個(gè)數(shù)據(jù)源配置完成。使用范例如下:
@Controller public class MyController { @GetMapping("/second_data_source") public String index(HttpServletRequest request, org.springframework.ui.Model modelMap) { List<Map<String, Object>> data = jdbcTemplate.queryForList("select * from my_table"); for (Map<String, Object> d : data) { System.out.println(d.get("my_field")); } } @Autowired private JdbcTemplate jdbcTemplate; }
讀到這里,這篇“Jspxcms支持多數(shù)據(jù)源嗎”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。