引入依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
|
yml配置
单机版
1 2 3 4 5 6 7 8
| spring: data: mongodb: host: 127.0.0.0 port: 27017 username: admin password: admin database: admin
|
副本集
1 2 3
| data: mongodb: uri: mongodb://192.168.186.128:27017,192.168.186.131:27018,192.168.186.132:27019/bilibili?username=admin&password=admin
|
MongoTemplate配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| package com.example.springboot.common.config;
import com.mongodb.WriteConcern; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.WritingConverter; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.*; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.util.Collections;
@Configuration public class MongoConfig {
@Bean public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory, MongoMappingContext context) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory); MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context); mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); return mappingConverter; }
@Bean public MongoTemplate mongoTemplate(MongoDatabaseFactory factory, MappingMongoConverter converter) { MongoTemplate mongoTemplate = new MongoTemplate(factory, converter); mongoTemplate.setWriteConcern(WriteConcern.MAJORITY); return mongoTemplate; } }
|
如果有某些数据类型转换需要,比如想让存入mongo的所有小数都保留小数后2位,如果不想用代码控制,可以定义一个转换器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| package com.example.springboot.common.config;
import com.mongodb.WriteConcern; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.WritingConverter; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.*; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.util.Collections;
@Configuration public class MongoConfig {
@Component @WritingConverter public static class BigDecimalToDouble implements Converter<BigDecimal, Double> { @Override public Double convert(BigDecimal bigDecimal) { return bigDecimal.doubleValue(); } }
@Bean public MongoCustomConversions mongoCustomConversions(BigDecimalToDouble bigDecimalToDouble) { return new MongoCustomConversions(Collections.singletonList(bigDecimalToDouble)); }
@Bean public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory, MongoMappingContext context, MongoCustomConversions conversions) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory); MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context); mappingConverter.setCustomConversions(conversions); mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); return mappingConverter; }
@Bean public MongoTemplate mongoTemplate(MongoDatabaseFactory factory, MappingMongoConverter converter) { MongoTemplate mongoTemplate = new MongoTemplate(factory, converter); mongoTemplate.setWriteConcern(WriteConcern.MAJORITY); return mongoTemplate; } }
|