Spring-boot集成pg、mongo多数据源过程详解
这篇文章主要介绍了Spring-boot集成pg、mongo多数据源过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
修改POM文件,增加相应Jar包
org.springframework.boot spring-boot-starter-data-mongodb org.postgresql postgresql runtime org.springframework.boot spring-boot-starter-jdbc
修改启动类,去除原有的数据源自动加载机制
@SpringBootApplication(
exclude={DataSourceAutoConfiguration.class,
PageHelperAutoConfiguration.class,
MongoAutoConfiguration.class,MongoDataAutoConfiguration.class//禁用数据源自动配置
})
@EnableEurekaClient
publicclassMainApplication{、、、
编写application.yml文件,增加配置信息
spring: #默认的postgreSQL库 datasource: pg: url:jdbc:postgresql://127.0.0.1:5432/pgdb username:us_wu password:netcool@919 driver-class-name:org.postgresql.Driver mg: host:127.0.0.1 username:aaa password:aaa database:mgdb port:27017
分别手动增加PG、mongo的数据源以及使用样例
pg
1、手动加载数据源
@Configuration
publicclassDataSourceConfig{
finalStringcmspg="spring.datasource.pg";
@Bean(name="pgDS")
@ConfigurationProperties(prefix=pg)
publicDataSourcedataSource(){
returnDataSourceBuilder.create().build();
}
2、创建pg配置文件,指定SqlSessionFactory以及要扫描的Dao
@Configuration
@MapperScan(basePackages={"com.**.mapper.pg"},sqlSessionFactoryRef="sqlSessionFactory")
publicclassPostgresDBConfig{
@Autowired
@Qualifier("pgDS")
privateDataSourcepgDS;
@Bean
publicSqlSessionFactorysqlSessionFactory()throwsException{
SqlSessionFactoryBeanfactoryBean=newSqlSessionFactoryBean();
factoryBean.setDataSource(pgDS);
returnfactoryBean.getObject();
}
@Bean
publicSqlSessionTemplatesqlSessionTemplate()throwsException{
SqlSessionTemplatetemplate=newSqlSessionTemplate(sqlSessionFactory());//使用上面配置的Factory
returntemplate;
}
}
3、编写Dao--注解形式
@Repository
@Mapper
publicinterfaceStCableFiberMapper{
@Select("SELECT*FROMst_cable_fiberWHEREid=#{id}")
St_cable_fiberfindById(@Param("id")Stringid);
mongo
1、加载mongo配置信息
publicabstractclassAbstractMongoConfigure{
privateStringhost,database,username,password;
privateintport;
//Settermethodsgohere..
/*
*MethodthatcreatesMongoDbFactoryCommontobothoftheMongoDb
*connections
*/
publicMongoDbFactorymongoDbFactory()throwsException{
ServerAddressserverAddress=newServerAddress(host,port);
ListmongoCredentialList=newArrayList<>();
mongoCredentialList.add(MongoCredential.createScramSha1Credential(username,database,password.toCharArray()));
returnnewSimpleMongoDbFactory(newMongoClient(serverAddress,mongoCredentialList),database);
}
/*
*FactorymethodtocreatetheMongoTemplate
*/
abstractpublicMongoTemplategetMongoTemplate()throwsException;
}
@Configuration
@EnableMongoRepositories(basePackages={"com.**.mapper.mg"},mongoTemplateRef="mongoTemplate")
@ComponentScan
@ConfigurationProperties(prefix="spring.datasource.mg")
publicclassMongoMasterConfigextendsAbstractMongoConfigure{
@Override
@Bean("mongoTemplate")
publicMongoTemplategetMongoTemplate()throwsException{
returnnewMongoTemplate(mongoDbFactory());
}
}
编写DaoMongoTemplate模式
@Repository
publicclassCmCableDetailRepo{
@Autowired
privateMongoTemplatemongoTemplate;
publicPagefindByLevelAndName(Stringareacode,intlevel,Stringname,intpageNum,intpageSize){
PageRequestpage=newPageRequest(pageNum,pageSize);
Queryquery=newQuery();
Criteriacriteria=newCriteria();
criteria.and("areacode").regex("^"+areacode);
if(level>-1){
criteria.and("cableSegment_level").is(level);
}
if(null!=name&&name.trim().length()>0){
criteria.and("zh_label").regex(".*?"+name+".*");
}
query.addCriteria(criteria);
Longcount=mongoTemplate.count(query,Cm_Cable.class);
Listlist=mongoTemplate.find(query.with(page),Cm_Cable.class);
returnnewPageImpl(list,page,count);
}
MongoRepository模式
@Repository publicinterfaceCmCableDetailMapperextendsMongoRepository{ }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。