springboot整合mongoDB数据库

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

  1. 引入pom依赖
<dependency>   
 <groupId>org.springframework.boot</groupId>   
 <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  1. 在配置文件中配置mongo库信息
spring: 
    data:   
      mongodb:     
	          database: data     
	     username: data     
	     password: 1xxx
	     host: localhost     
	     port: 27017
@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等方法

  1. 编写操作mongo的接口
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这个时间之后的数据

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

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

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

 @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操作接口的实现类

  1. 编写controller,对数据进行访问
@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    }

关注公众号秦川以北

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值