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); List list=mongoTemplate.find(query.with(page),Cm_Cable.class); returnnewPageImpl (list,page,count); }
MongoRepository模式
@Repository publicinterfaceCmCableDetailMapperextendsMongoRepository{ }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。