Spring-boot集成pg、mongo多数据源

陌路散爱 提交于 2019-12-01 05:08:36

spring boot集成pg、mongo多数据源

修改POM文件,增加相应Jar包

12345678910111213
<dependency>		<groupId>org.springframework.boot</groupId>		<artifactId>spring-boot-starter-data-mongodb</artifactId>	</dependency><dependency>		<groupId>org.postgresql</groupId>		<artifactId>postgresql</artifactId>		<scope>runtime</scope>	</dependency><dependency>		<groupId>org.springframework.boot</groupId>		<artifactId>spring-boot-starter-jdbc</artifactId></dependency>

修改启动类,去除原有的数据源自动加载机制

1234567
@SpringBootApplication(        exclude = {DataSourceAutoConfiguration.class,                    PageHelperAutoConfiguration.class ,        		   MongoAutoConfiguration.class, MongoDataAutoConfiguration.class//禁用数据源自动配置        })@EnableEurekaClientpublic class MainApplication {、、、

编写application.yml文件,增加配置信息

1234567891011121314
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

1234567891011121314151617181920212223242526272829303132333435363738394041424344
1、手动加载数据源@Configurationpublic class DataSourceConfig {    final  String cmspg="spring.datasource.pg";    @Bean(name = "pgDS")    @ConfigurationProperties(prefix =pg)     public DataSource dataSource() {        return DataSourceBuilder.create().build();    }2、创建pg配置文件,指定SqlSessionFactory以及要扫描的Dao@Configuration@MapperScan(basePackages = {"com.**.mapper.pg"}, sqlSessionFactoryRef = "sqlSessionFactory")public class PostgresDBConfig {    @Autowired    @Qualifier("pgDS")    private DataSource pgDS;    @Bean    public SqlSessionFactory sqlSessionFactory() throws Exception {        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();        factoryBean.setDataSource(pgDS);            return factoryBean.getObject();    }    @Bean    public SqlSessionTemplate sqlSessionTemplate() throws Exception {        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory()); // 使用上面配置的Factory        return template;    }}3、编写Dao--注解形式@Repository@Mapperpublic interface StCableFiberMapper {    @Select("SELECT * FROM st_cable_fiber WHERE id = #{id}")    St_cable_fiber findById(@Param("id") String id);

mongo

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
1、加载mongo配置信息public abstract class AbstractMongoConfigure {		private String host, database, username, password;		private int port;		// Setter methods go here..	 		/*		 * Method that creates MongoDbFactory Common to both of the MongoDb		 * connections		 */		public MongoDbFactory mongoDbFactory() throws Exception {			ServerAddress serverAddress = new ServerAddress(host, port);			List<MongoCredential> mongoCredentialList = new ArrayList<>();			mongoCredentialList.add(MongoCredential.createScramSha1Credential(username, database, password.toCharArray()));			return new SimpleMongoDbFactory(new MongoClient(serverAddress,mongoCredentialList), database);		}	 		/*		 * Factory method to create the MongoTemplate		 */		abstract public MongoTemplate getMongoTemplate() throws Exception;}@Configuration@EnableMongoRepositories(basePackages = {"com.**.mapper.mg"},mongoTemplateRef = "mongoTemplate") @ComponentScan@ConfigurationProperties(prefix = "spring.datasource.mg")public class MongoMasterConfig extends AbstractMongoConfigure{	@Override	@Bean("mongoTemplate")	public MongoTemplate getMongoTemplate() throws Exception {		return new MongoTemplate(mongoDbFactory()); 	}}2.1、编写Dao  MongoTemplate模式@Repositorypublic class CmCableDetailRepo{	@Autowired	private MongoTemplate mongoTemplate;	public Page<Cm_Cable> findByLevelAndName(String areacode, int level,String name,int pageNum, int pageSize){		PageRequest page = new PageRequest(pageNum, pageSize);		Query query = new Query();		Criteria criteria = new Criteria();		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);		Long count = mongoTemplate.count(query, Cm_Cable.class);		List<Cm_Cable> list = mongoTemplate.find(query.with(page), Cm_Cable.class);		return new PageImpl<Cm_Cable>(list, page, count);	}2.2、MongoRepository模式@Repositorypublic interface CmCableDetailMapper extends MongoRepository<Cm_Cable, String>{}

原文:大专栏  Spring-boot集成pg、mongo多数据源


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!