之前有个项目,用的是Springboot框架,对接的数据库是mongodb,当时花了一些时间去做这个配置MongoDB的连接,现在把这个过程记录下来,以免遗忘。
一、在pom中添加依赖。
<!-- 增加mongodb支持 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>1.5.9.RELEASE</version></dependency> |
二、配置数据源
在项目中,使用的配置文件是yaml格式的,所以配置信息如下:
spring: data: mongodb: uri: mongodb://地址 |
如果使用的是properties格式的话,配置信息则是;
spring.data.mongodb.uri= mongodb://地址 |
三、在实体中添加注解
在实体添加@Document注解,collection= "对应的表名"。
在属性上添加@Filed注解,值为对应的字段名。
@Getter@Setter@Document(collection = "User")public class User { /* 用户id: */ @Field("id") private String id; /* 用户名 */ @Field("UserName") private String userName; /* 性别 */ @Field("sex") private String sex;} |
四、在业务层使用MongoDb的方法:
@Service } |
五、MongoTemplate常使用的方法
1.插入
mongoTemplate.insert(Object); |
2.删除
Query query=new Query(Criteria.where("_id").is(id)); mongoTemplate.remove(query,AutomaticAlarm.class); |
Query query=new Query(Criteria.where("_id").is(id)); Update update = Update.update("要更新的字段", "更新的值"); mongoTemplate.updateFirst(query, update, Object.class); |
4.查询
1.查找所有 mongoTemplate.findAll(Object.class); 2.条件查询(具体某个字段的值) Query query=new Query(Criteria.where("字段1").is("值1")); mongoTemplate.find(query, Object.class); 3.条件查询(大于小于) Criteria criteria = Criteria.where("字段").gte(某个值).lte(某个值); mongoTemplate.find(query, Object.class); 4.模糊查询 Pattern pattern = Pattern.compile("^.*" + searchKey + ".*$");//这里时使用的是正则匹配,searchKey是关键字,接口传参,也可以自己定义。 5.分页查询 6.聚合查询 |
六、增强配置
如果我们在项目中需要管理MongoDB的最大连接时长、socket保持活跃、最大等待时长等,那么我们在pom文件中需要引入一个增强管理包。
<!-- 增加mongoplus支持 --><dependency> <groupId>com.spring4all</groupId> <artifactId>mongodb-plus-spring-boot-starter</artifactId> <version>1.0.0.RELEASE</version></dependency> |
同时在项目启动类SpringBootMainApplication上添加一个注解@EnableMongoPlus。
我们就可以在配置文件中添加这些配置了。
spring: data: mongodb: uri: mongodb://地址 option: socket-keep-alive: true max-connection-idle-time: 60000# connect-timeout: 36000# min-connection-per-host: 5# threads-allowed-to-block-for-connection-multiplier: 5# max-wait-time: 120000# socket-timeout: 0# max-connection-life-time: 0# heartbeat-socket-timeout: 36000# heartbeat-connect-timeout: 36000# min-heartbeat-frequency: 5# heartbeat-frequency: 10 |