SpringBoot连接多个mongoDB数据库的方式
SpringBoot连接多Mongo数据源
·
1、第一步:在resource中配置mongoDB的地址(多个数据库配置方法相同)
spring.data.mongodb.数据库标识名.uri=mongodb://name:password%localhost:27017/表名
注意:数据库标识名要唯一
2、第二步:调用数据库
方式一:将mongo注入到bean中
@Configuration
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "spring.data.mongodb.数据库标识名")
public class GongJiMongoTemplate extends AbstractMongoConfig{
@Primary
@Override
@Bean(name = "oneMongoTemplate")
public MongoTemplate getMongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}
将该mongo注入到需要使用的地方
@Autowired
@Qualifier("oneMongoTemplate")
private MongoTemplate oneMongoTemplate;
查询数据库(collectionName是表名,param是mongo的sql语句)
//查询数据
AggregateIterable<Document> documents = oneMongoTemplate.getCollection(collectionName).aggregate(param);
方法二:编写一个配置类,返回mongo的连接
@Component
public class MongoUtils{
@Value("${spring.data.mongodb.one.uri}")
private String oneMongo;
private Map<String, MongoClient> mongoClientMap = new HashMap<>();
public MongoCollection getPrimary(String beanname){
MongoClient ml = getMongoClient(oneMongo);
MongoDatabase mongoDatabase = ml.getDatabase(beanname);
//返回一个mongo的连接
return mongoDatabase.getCollection(beanname);
}
}
发送sql到mongo(cmd为编写的mongo的sql,为String类型)
//查询方法
public MongoCursor<Document> findCmd(String cmd,String beanname){
//将传来的sql转换成JSONArray
JSONArray cmdArr = JSONArray.parseArray(cmd);
//建立连接
MongoCollection pcoll = getPrimary(beanname);
List<Map<String,Object>> retList = new ArrayList();
List<DBObject> readValue = null;
MongoCursor<Document> cursor=null;
try {
readValue = (List<DBObject> )com.mongodb.util.JSON.parse(cmdArr.toJSONString());
AggregateIterable<Document> aggregate = pcoll.aggregate(readValue);
cursor = aggregate.iterator();
} catch (Exception e) {
e.printStackTrace();
}
return cursor;
}
更多推荐
已为社区贡献1条内容
所有评论(0)