SpringBoot实现多个数据原读取

由于项目中需要连接两个mysql数据原,所以需要两套访问配置


连接串配置在需要用到数据库连接项目中db.properties

mysql.dbUrl=jdbc:mysql://127.0.0.1:3306/envmanagement?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&allowMultiQueries=true
mysql.dbUser=root
mysql.dbPassword=123456

mysql2.dbUrl=jdbc:mysql://172.16.100.30:3306/better?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&allowMultiQueries=true
mysql2.dbUser=root
mysql2.dbPassword=123456

应用站点的Springboot启动class Application 中加入配置文件的读取



配置1

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConnectionConfig {

    @Value("${sqlserver.dbUrl}")
    private String sqlserverDbUrl;
    @Value("${sqlserver.dbUser}")
    private String sqlserverDbUser;
    @Value("${sqlserver.dbPassword}")
    private String sqlserverDbPassword;

    @Value("${mysql.dbUrl}")
    private String mysqlDbUrl;
    @Value("${mysql.dbUser}")
    private String mySqlDbUser;
    @Value("${mysql.dbPassword}")
    private String mysqlDbPassword;


    public String getSqlserverDbUrl() {
        return sqlserverDbUrl;
    }

    public void setSqlserverDbUrl(String sqlserverDbUrl) {
        this.sqlserverDbUrl = sqlserverDbUrl;
    }

    public String getSqlserverDbUser() {
        return sqlserverDbUser;
    }

    public void setSqlserverDbUser(String sqlserverDbUser) {
        this.sqlserverDbUser = sqlserverDbUser;
    }

    public String getSqlserverDbPassword() {
        return sqlserverDbPassword;
    }

    public void setSqlserverDbPassword(String sqlserverDbPassword) {
        this.sqlserverDbPassword = sqlserverDbPassword;
    }

    public String getMysqlDbUrl() {
        return mysqlDbUrl;
    }

    public void setMysqlDbUrl(String mysqlDbUrl) {
        this.mysqlDbUrl = mysqlDbUrl;
    }

    public String getMySqlDbUser() {
        return mySqlDbUser;
    }

    public void setMySqlDbUser(String mySqlDbUser) {
        this.mySqlDbUser = mySqlDbUser;
    }

    public String getMysqlDbPassword() {
        return mysqlDbPassword;
    }

    public void setMysqlDbPassword(String mysqlDbPassword) {
        this.mysqlDbPassword = mysqlDbPassword;
    }
}


配置2

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConnectionConfig2 {

    @Value("${mysql2.dbUrl}")
    private String mysqlDbUrl2;
    @Value("${mysql2.dbUser}")
    private String mySqlDbUser2;
    @Value("${mysql2.dbPassword}")
    private String mysqlDbPassword2;

    public String getMysqlDbUrl2() {
        return mysqlDbUrl2;
    }

    public void setMysqlDbUrl2(String mysqlDbUrl2) {
        this.mysqlDbUrl2 = mysqlDbUrl2;
    }

    public String getMySqlDbUser2() {
        return mySqlDbUser2;
    }

    public void setMySqlDbUser2(String mySqlDbUser2) {
        this.mySqlDbUser2 = mySqlDbUser2;
    }

    public String getMysqlDbPassword2() {
        return mysqlDbPassword2;
    }

    public void setMysqlDbPassword2(String mysqlDbPassword2) {
        this.mysqlDbPassword2 = mysqlDbPassword2;
    }
}

mybatis配置1

import com.alibaba.druid.pool.DruidDataSource;
//import com.baidu.disconf.client.DisconfMgrBeanSecond;
import com.ymatou.envmanagement.infrastructure.util.DataSourceUtils;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;

import javax.sql.DataSource;
import java.util.Properties;


@Configuration
@MapperScan(
        basePackages = {
                "com.ymatou.envmanagement.infrastructure.mysqldb.mapper",
                "com.ymatou.envmanagement.infrastructure.mysqldb.query"
        },
        sqlSessionTemplateRef = "mySqlSessionTemplate"
)
@EnableTransactionManagement(proxyTargetClass = true)
public class MySqlDataSourceConfig {
    @Autowired
    private ConnectionConfig connectionConfig;

    //加上这个隐性依赖
//    @Autowired
//    private DisconfMgrBeanSecond disconfMgrBeanSecond;

    @Bean(name = "mySqlDataSource")
    public DataSource mySqlDataSource() {

        DruidDataSource dataSource = DataSourceUtils.initDataSource();
        dataSource.setUrl(connectionConfig.getMysqlDbUrl());
        dataSource.setUsername(connectionConfig.getMySqlDbUser());
        dataSource.setPassword(connectionConfig.getMysqlDbPassword());
        return dataSource;
    }

    @Bean(name = "mySqlSessionFactory")
    public SqlSessionFactory mySqlSessionFactory() throws Exception {

        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

        // 获取properties中的对应配置信息
        String mapperLocation = "classpath*:sqlmap/mysql/**/*.xml";
        String configLocation = "classpath:mybatis-settings.xml";

        Properties properties = new Properties();

        sessionFactory.setDataSource(mySqlDataSource());
        sessionFactory.setConfigurationProperties(properties);

        // 设置MapperLocations configLocation路径
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resourcePatternResolver.getResources(mapperLocation));
        sessionFactory.setConfigLocation(resourcePatternResolver.getResource(configLocation));

        return sessionFactory.getObject();
    }

    @Bean(name = "mySqlSessionTemplate")
    public SqlSessionTemplate mySqlSessionTemplate() throws Exception {
        SqlSessionTemplate sqlSession = new SqlSessionTemplate(mySqlSessionFactory());
        return sqlSession;
    }


    @Bean(name = "mySqlTransactionManager")
    public PlatformTransactionManager mySqlTransactionManager() {
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(mySqlDataSource());
        //transactionManager.setDefaultTimeout(1);
        return transactionManager;
    }

    @Bean(name = "mySqlTransactionTemplate")
    public TransactionTemplate mySqlTransactionTemplate() {
        return new TransactionTemplate(mySqlTransactionManager());
    }

}

mybatis配置2

import com.alibaba.druid.pool.DruidDataSource;
import com.ymatou.envmanagement.infrastructure.util.DataSourceUtils;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@MapperScan(
        basePackages = {
                "com.ymatou.envmanagement.infrastructure.mysqldb2.mapper",
                "com.ymatou.envmanagement.infrastructure.mysqldb2.query"
        },
        sqlSessionTemplateRef = "mySqlSessionTemplate2"
)
@EnableTransactionManagement(proxyTargetClass = true)
public class MySqlDataSourceConfig2 {
    @Autowired
    private ConnectionConfig2 connectionConfig2;

    //加上这个隐性依赖
//    @Autowired
//    private DisconfMgrBeanSecond disconfMgrBeanSecond;

    @Bean(name = "mySqlDataSource2")
    public DataSource mySqlDataSource() {

        DruidDataSource dataSource = DataSourceUtils.initDataSource();
        dataSource.setUrl(connectionConfig2.getMysqlDbUrl2());
        dataSource.setUsername(connectionConfig2.getMySqlDbUser2());
        dataSource.setPassword(connectionConfig2.getMysqlDbPassword2());
        return dataSource;
    }

    @Bean(name = "mySqlSessionFactory2")
    public SqlSessionFactory mySqlSessionFactory() throws Exception {

        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

        // 获取properties中的对应配置信息
        String mapperLocation = "classpath*:sqlmap/mysql2/**/*.xml";
        String configLocation = "classpath:mybatis-settings.xml";

        Properties properties = new Properties();

        sessionFactory.setDataSource(mySqlDataSource());
        sessionFactory.setConfigurationProperties(properties);

        // 设置MapperLocations configLocation路径
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resourcePatternResolver.getResources(mapperLocation));
        sessionFactory.setConfigLocation(resourcePatternResolver.getResource(configLocation));

        return sessionFactory.getObject();
    }

    @Bean(name = "mySqlSessionTemplate2")
    public SqlSessionTemplate mySqlSessionTemplate() throws Exception {
        SqlSessionTemplate sqlSession = new SqlSessionTemplate(mySqlSessionFactory());
        return sqlSession;
    }


    @Bean(name = "mySqlTransactionManager2")
    public PlatformTransactionManager mySqlTransactionManager() {
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(mySqlDataSource());
        //transactionManager.setDefaultTimeout(1);
        return transactionManager;
    }

    @Bean(name = "mySqlTransactionTemplate2")
    public TransactionTemplate mySqlTransactionTemplate() {
        return new TransactionTemplate(mySqlTransactionManager());
    }

mybatis-generator

可以用mybatis-generator来生成固定的ORM代码,具体操作参考:http://blog.csdn.net/chenjiazhu/article/details/77849645

ORM代码示例

以node表做示例


NodePo
public class NodePo {
    /**
     * id INTEGER(10) 必填<br>
     * 
     */
    private Integer id;

    /**
     * name VARCHAR(200)<br>
     * 
     */
    private String name;

    /**
     * url VARCHAR(500)<br>
     * 
     */
    private String url;

    /**
     * sitstatus BIT 默认值[0]<br>
     * 
     */
    private Boolean sitstatus;

    /**
     * time VARCHAR(50)<br>
     * 
     */
    private String time;

    /**
     * active BIT 默认值[0]<br>
     * 
     */
    private Boolean active;

    /**
     * domain VARCHAR(50)<br>
     * 
     */
    private String domain;

    /**
     * script VARCHAR(500)<br>
     * 
     */
    private String script;

    /**
     * stressstatus BIT 默认值[0]<br>
     * 
     */
    private Boolean stressstatus;

    /**
     * uatstatus BIT 默认值[0]<br>
     * 
     */
    private Boolean uatstatus;

    /**
     * checktype INTEGER(10) 默认值[1]<br>
     * 
     */
    private Integer checktype;

    /**
     * checkvalue VARCHAR(200) 默认值[ok]<br>
     * 
     */
    private String checkvalue;

    /**
     * stressemailactive BIT 默认值[0]<br>
     * 
     */
    private Boolean stressemailactive;

    /**
     * emails VARCHAR(500)<br>
     * 
     */
    private String emails;

    /**
     * sitemailactive BIT<br>
     * 
     */
    private Boolean sitemailactive;

    /**
     * uatemailactive BIT 默认值[1]<br>
     * 
     */
    private Boolean uatemailactive;

    /**
     * nodecol VARCHAR(45) 默认值[1]<br>
     * 
     */
    private String nodecol;

    /**
     * cron VARCHAR(100)<br>
     * 
     */
    private String cron;

    /**
     * id INTEGER(10) 必填<br>
     * 获得 
     */
    public Integer getId() {
        return id;
    }

    /**
     * id INTEGER(10) 必填<br>
     * 设置 
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * name VARCHAR(200)<br>
     * 获得 
     */
    public String getName() {
        return name;
    }

    /**
     * name VARCHAR(200)<br>
     * 设置 
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    /**
     * url VARCHAR(500)<br>
     * 获得 
     */
    public String getUrl() {
        return url;
    }

    /**
     * url VARCHAR(500)<br>
     * 设置 
     */
    public void setUrl(String url) {
        this.url = url == null ? null : url.trim();
    }

    /**
     * sitstatus BIT 默认值[0]<br>
     * 获得 
     */
    public Boolean getSitstatus() {
        return sitstatus;
    }

    /**
     * sitstatus BIT 默认值[0]<br>
     * 设置 
     */
    public void setSitstatus(Boolean sitstatus) {
        this.sitstatus = sitstatus;
    }

    /**
     * time VARCHAR(50)<br>
     * 获得 
     */
    public String getTime() {
        return time;
    }

    /**
     * time VARCHAR(50)<br>
     * 设置 
     */
    public void setTime(String time) {
        this.time = time == null ? null : time.trim();
    }

    /**
     * active BIT 默认值[0]<br>
     * 获得 
     */
    public Boolean getActive() {
        return active;
    }

    /**
     * active BIT 默认值[0]<br>
     * 设置 
     */
    public void setActive(Boolean active) {
        this.active = active;
    }

    /**
     * domain VARCHAR(50)<br>
     * 获得 
     */
    public String getDomain() {
        return domain;
    }

    /**
     * domain VARCHAR(50)<br>
     * 设置 
     */
    public void setDomain(String domain) {
        this.domain = domain == null ? null : domain.trim();
    }

    /**
     * script VARCHAR(500)<br>
     * 获得 
     */
    public String getScript() {
        return script;
    }

    /**
     * script VARCHAR(500)<br>
     * 设置 
     */
    public void setScript(String script) {
        this.script = script == null ? null : script.trim();
    }

    /**
     * stressstatus BIT 默认值[0]<br>
     * 获得 
     */
    public Boolean getStressstatus() {
        return stressstatus;
    }

    /**
     * stressstatus BIT 默认值[0]<br>
     * 设置 
     */
    public void setStressstatus(Boolean stressstatus) {
        this.stressstatus = stressstatus;
    }

    /**
     * uatstatus BIT 默认值[0]<br>
     * 获得 
     */
    public Boolean getUatstatus() {
        return uatstatus;
    }

    /**
     * uatstatus BIT 默认值[0]<br>
     * 设置 
     */
    public void setUatstatus(Boolean uatstatus) {
        this.uatstatus = uatstatus;
    }

    /**
     * checktype INTEGER(10) 默认值[1]<br>
     * 获得 
     */
    public Integer getChecktype() {
        return checktype;
    }

    /**
     * checktype INTEGER(10) 默认值[1]<br>
     * 设置 
     */
    public void setChecktype(Integer checktype) {
        this.checktype = checktype;
    }

    /**
     * checkvalue VARCHAR(200) 默认值[ok]<br>
     * 获得 
     */
    public String getCheckvalue() {
        return checkvalue;
    }

    /**
     * checkvalue VARCHAR(200) 默认值[ok]<br>
     * 设置 
     */
    public void setCheckvalue(String checkvalue) {
        this.checkvalue = checkvalue == null ? null : checkvalue.trim();
    }

    /**
     * stressemailactive BIT 默认值[0]<br>
     * 获得 
     */
    public Boolean getStressemailactive() {
        return stressemailactive;
    }

    /**
     * stressemailactive BIT 默认值[0]<br>
     * 设置 
     */
    public void setStressemailactive(Boolean stressemailactive) {
        this.stressemailactive = stressemailactive;
    }

    /**
     * emails VARCHAR(500)<br>
     * 获得 
     */
    public String getEmails() {
        return emails;
    }

    /**
     * emails VARCHAR(500)<br>
     * 设置 
     */
    public void setEmails(String emails) {
        this.emails = emails == null ? null : emails.trim();
    }

    /**
     * sitemailactive BIT<br>
     * 获得 
     */
    public Boolean getSitemailactive() {
        return sitemailactive;
    }

    /**
     * sitemailactive BIT<br>
     * 设置 
     */
    public void setSitemailactive(Boolean sitemailactive) {
        this.sitemailactive = sitemailactive;
    }

    /**
     * uatemailactive BIT 默认值[1]<br>
     * 获得 
     */
    public Boolean getUatemailactive() {
        return uatemailactive;
    }

    /**
     * uatemailactive BIT 默认值[1]<br>
     * 设置 
     */
    public void setUatemailactive(Boolean uatemailactive) {
        this.uatemailactive = uatemailactive;
    }

    /**
     * nodecol VARCHAR(45) 默认值[1]<br>
     * 获得 
     */
    public String getNodecol() {
        return nodecol;
    }

    /**
     * nodecol VARCHAR(45) 默认值[1]<br>
     * 设置 
     */
    public void setNodecol(String nodecol) {
        this.nodecol = nodecol == null ? null : nodecol.trim();
    }

    /**
     * cron VARCHAR(100)<br>
     * 获得 
     */
    public String getCron() {
        return cron;
    }

    /
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值