溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Jspxcms支持多數(shù)據(jù)源嗎

發(fā)布時(shí)間:2022-01-19 15:41:00 來源:億速云 閱讀:120 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(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)上也有大量的教程。

修改數(shù)據(jù)庫連接配置

配置文件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

增加數(shù)據(jù)源配置代碼

在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è)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

AI