springboot集成mongo

Posted qinyuanyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot集成mongo相关的知识,希望对你有一定的参考价值。

大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享

 

?在项目中配置,mongoDB数据库,spring整合

1. 引入pom依赖

<dependency>   
<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2. 在配置文件中配置mongo库信息

  spring: 

    data:   

      mongodb:     

          database: data     

     username: data     

     password: 1xxx

     host: localhost     

     port: 27017

 

3. 编写你要使用的mongo库中某个collection的实体类,我在这里用的是data

 1 @Document(collection = "data")
 2 @Data
 3 public class DataMongoObject implements Serializable 
 4     private static final long serialVersionUID = 1L;
 5     /**
 6      * objectId,无需设值
 7      */
 8     @Id
 9     private String id;
10 ?
11     private String token;
12     /**
13      * 数据源名称
14      */
15     private String sourceName;
16     /**
17      * 数据源描述
18      */
19     private String sourceDesc;
20 ?
21     private String updateTime;
22 ?
23     private String dataType = "json";
24     /**
25      * 用户数据
26      */
27     private Object data;
28 ?
29 

  这个实体类需要实现序列化接口

  这里的@Document,说明使用的当前库中的那个collection

  下面的@Data是lombok中的功能,根据你定义的字段自动注入setter和getter等方法

4. 编写操作mongo的接口

 1 public interface DataRepository extends MongoRepository<DataMongoObject, String> 
 2 ?
 3     /**
 4      * 通过token进行数据查询,非GridFS
 5      *
 6      * @param token
 7      * @return
 8      */
 9     DataMongoObject findByToken(String token);
10 ?
11     /**
12      * 通过sourceName进行查询
13      *
14      * @param sourceName
15      * @param pageable
16      * @return
17      */
18     Page<DataMongoObject> findBySourceName(String sourceName, Pageable pageable);
19 ?
20     @Override
21     @Query(value = "‘updateTime‘:‘$gte‘:‘1564478681215‘")
22     Page<DataMongoObject> findAll(Pageable pageable);
23 ?
24 //    @Query(value = "‘requestArgs.website‘:?0")
25 //    Page<DataMongoObject> findByRequestArsWebsite(String website, Pageable pageable);
26 

  编写自己的mongo操作类DataRepository继承MongoRepository

  根据自己的需要些一些CRUD

  @Query注解中时mongo的查询条件,

  上面的意思是查询在1564478681215这个时间之后的数据

5. 编写你的实现类去写具体的CRUD逻辑,以及一些判断条件

如果你只是想使用mongoRepository已经定义好的操作方法,

这个步骤也可以省去,直接看第6步

 1 @Slf4j
 2 @Service
 3 public class GridFsMongoService 
 4 ?
 5     @Autowired
 6     private DataRepository dataRepository;
 7 ?
 8     public void findAll(int pageNum,int pageSize) 
 9         Page<DataMongoObject> all1 = dataRepository.findAll(new PageRequest(--pageNum, pageSize));
10     
11 

@Service注解表明这是一个bean,功能是上面第4步mongo操作接口的实现类

6. 编写controller,对数据进行访问

 1 @Slf4j
 2 @RestController
 3 @RequestMapping("/api/mongo")
 4 public class ParsedDataController 
 5     @Autowired
 6     private DataRepository dataRepository;
 7   /**
 8        * page从零开始的,这里做了处理,从1开始
 9        *
10        * @param pageNum
11        * @param pageSize
12        * @return
13        */
14       @GetMapping("/data/all")
15       public String findAll(Integer pageNum, Integer pageSize) 
16           ResultInfo resultInfo = new ResultInfo();
17           try 
18               if (StringUtil.isEmpty(pageNum) || pageNum < 1 || pageNum >= Consts.MAX_SIZE) 
19                   pageNum = Consts.DEFAULT_PAGE_NUM;
20               
21   
22               if (StringUtil.isEmpty(pageSize) || pageSize < 1 || pageSize >= Consts.MAX_SIZE) 
23                   pageSize = Consts.DEFAULT_PAGE_SIZE;
24               
25   
26               Page<DataMongoObject> all = dataRepository.findAll(new PageRequest(--pageNum, pageSize));
27               resultInfo.setSuccess(true);
28               resultInfo.setDetail(all);
29            catch (Exception e) 
30               LOGGER.error(e.getMessage(), e);
31           
32           return resultInfo.toString();
33       
34    

 

关注公众号秦川以北

后续更多精彩实用内容分享!

技术图片

 

以上是关于springboot集成mongo的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot集成Kafka

SpringBoot.03.SpringBoot集成jsp

SpringBoot.03.SpringBoot集成jsp

SpringBoot.03.SpringBoot集成jsp

SpringBoot使用·上篇(SpringBoot注解+集成JDBC+集成druid(德鲁伊)+sql监控)

SpringBoot使用·上篇(SpringBoot注解+集成JDBC+集成druid(德鲁伊)+sql监控)