1.导入相应的依赖
<!--mongodb--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
2.再配置文件中配置Mogo的信息
#xxx表示你自定义的名字
spring.data.mongodb.xxx.database= #Mongo指定使用的库名 spring.data.mongodb.xxx.host=192.168.x.x #Mongo所在的IP spring.data.mongodb.xxx.port=3633 #Mongo所在的Port spring.data.mongodb.xxx.password= #Mongo若有账号密码则需要配置 spring.data.mongodb.xxx.username= #Mongo若有账号密码则需要配置
3.获取Mongo的properties信息
/**
* 此处是获取配置文件中配置的Mongo信息
* 将配置信息封装至MongoProperties中
*/
@Configuration public class MultipleMongoProperties {
//perfix表示配置文件中配置的名字,到xxx为止
//此处为此Mongo命名为xxxMongoTemplate @Primary @Bean(name="xxxMongoTemplate") @ConfigurationProperties(prefix="spring.data.mongodb.xxx") public MongoProperties statisMongoProperties() { return new MongoProperties(); } }
4.配置MongoTemplate
//basePackages:指定上面配置MongoProperties的包位置
@Configuration @EnableMongoRepositories(basePackages = "com.xxx.config.mongoConfig", mongoTemplateRef = "zzz") public class RentFollowMongo { //将上面封装到MongoProperties信息注入容器 @Autowired @Qualifier("xxxMongoTemplate") private MongoProperties mongoProperties;
//为MongoTemplate命名:可自定义,将MongoTemplate放入容器供使用 @Bean(name = "zzz") public MongoTemplate zzzTemplate() throws Exception { return new MongoTemplate(rentfollowFactory(this.mongoProperties)); }
//此处获取到Mongo工厂 @Bean public MongoDbFactory mongoFactory(MongoProperties mongoProperties){
//注册地址 ServerAddress serverAdress = new ServerAddress(mongoProperties.getHost(),mongoProperties.getPort());
//获取到MongoFactory return new SimpleMongoDbFactory(new MongoClient(serverAdress), mongoProperties.getDatabase()); } }
5.使用MongoTemplate
@Component public class MongoTest { @Autowired @Qualifier(value = "zzz") private MongoTemplate mongoTemplate;
public List<Xxx> findFromMongo(){ /* * 查询条件 */ Query query = new Query();
/* * 数据库名称:在Mongo中的数据库名 */ String mongoDbName= "Test_Mongo";
//查询此数据库中所有数据,Xxx为封装了Mongo数据库字段的实体
List<Xxx> xxxList = mongoTemplate.fin(query,Xxx.class,mongoDbName);
//过滤查询条件:regex里面使用正则去过滤,此处表示不包含以xxxx开头的数据
query.addCriteria(Criteria.where("e").regex(Pattern.compile("^((?!xxxx).)*$",Pattern.CASE_INSENSITIVE)
//添加查询条件进行查询:where为Mongo中的字段信息,in表示范围,类似Sql:select * from table where a in(a,b,c)
query.addCriteria(Criteria.where("a").in(a,b,c);
//分页 //query.skip((pageNo-1)*pageSize);
//query.limit(pageSize); //排序(升序) 若有置顶字段可以先排置顶 //query.with(new Sort(Sort.Direction.ASC,"sort")); //排序(降序) //query.with(new Sort(Sort.Direction.DESC,"sort")); //查询此数据库总条数
long count = mongoTemplate.count(query,mongoDbName);
//此处只返回集合,信息可根据自身需要进行封装并返回 return xxxList; }