SpringBoot之MongoDB

SpringBoot之MongoDB

SpringBoot简化了Spring的初始搭建和开发过程,并良好的集成了各种框架,本文主要讲述SpringBoot集成Mongodb,因为Mongodb是为快速开发互联网Web应用而构建的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统

1. 环境准备

  • IDEA 2019.3
  • SpringBoot 2.0
  • mongodb v3.2.21

2. mongdb的安装

下载mongodb安装包 https://www.mongodb.com/download-center
选择自定义安装,在安装目录(bin同级目录)下创建data文件夹,并在data文件夹下分别创建db和log文件夹,如图:
在这里插入图片描述
在这里插入图片描述
3. 项目依赖
项目中安装了lombok插件并集成了Redis和Swagger,依赖较多,故而贴出一部分代码

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     <scope>test</scope>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>

4. 项目配置

spring:
  data:
    mongodb:
      host: localhost
      port: 27017
      database: manage

需要在mongodb创建名为manage的库
5. Controller层

package com.manage.controller;


import com.manage.common.ResponseMO;
import com.manage.entity.RecordDO;
import com.manage.mo.RecordMO;
import com.manage.repository.RecordRepository;
import com.manage.utils.DateUtil;
import com.manage.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/record")
@Api(tags = "访问记录管理")
public class RecordController extends BaseController {

    @Autowired
    private RecordRepository recordRepository;

    @PostMapping("/add")
    @ApiOperation(value = "新增访问记录")
    public ResponseMO addRecord(@Valid @RequestBody RecordMO recordMO) {
        RecordDO recordDO = new RecordDO();
        BeanUtils.copyProperties(recordMO, recordDO);
        recordDO.setRecordId(StringUtil.generateUUID());
        recordDO.setVisitTime(DateUtil.getCurrentTime());
        recordRepository.save(recordDO);
        return success(recordDO.getRecordId(), "访问记录新增成功");
    }

    @GetMapping("/fetch/{recordId}")
    @ApiOperation(value = "获取访问记录")
    public ResponseMO<RecordMO> fetchRecord(@PathVariable("recordId") String recordId) {
        RecordMO recordMO = new RecordMO();
        RecordDO recordDO = recordRepository.findByRecordId(recordId);
        recordMO.setUserId(recordDO.getUserId());
        recordMO.setIp(recordDO.getIp());
        recordMO.setCity(recordDO.getCity());
        recordMO.setRecordId(recordDO.getRecordId());
        return success(recordMO);
    }

    @PutMapping("/update/{recordId}")
    @ApiOperation(value = "更新记录")
    public ResponseMO updateRecord(@PathVariable("recordId") String recordId,
                                   @Valid @RequestBody RecordMO recordMO){
        RecordDO recordDO = recordRepository.findByRecordId(recordId);
        if (recordDO == null) {
            return error("记录不存在");
        }
        recordDO.setIp(recordMO.getIp());
        recordDO.setCity(recordMO.getCity());
        recordDO.setUserId(recordMO.getUserId());
        recordDO.setVisitTime(DateUtil.getCurrentTime());
        recordRepository.save(recordDO);
        return success("更新成功");
    }


    @DeleteMapping("/delete/{recordId}")
    @ApiOperation(value = "删除记录")
    public ResponseMO deleteRecord(@PathVariable("recordId") String recordId) {
        RecordDO recordDO = recordRepository.findByRecordId(recordId);
        if (recordDO == null) {
            return error("记录不存在");
        }
        recordRepository.delete(recordDO);
        return success("删除成功");
    }
}

6. Repository层

package com.manage.repository;

import com.manage.entity.RecordDO;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface RecordRepository extends MongoRepository<RecordDO, String> {

    RecordDO findByRecordId(String recordId);
}

7. DO层

package com.manage.entity;


import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Document(collection = "record")
public class RecordDO {

    private String recordId;

    private String userId;

    private String ip;

    private String city;

    private Long visitTime;

}

8. MO层

package com.manage.mo;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class RecordMO {

    @ApiModelProperty(value = "访问id")
    private String recordId;

    @ApiModelProperty(value = "用户id")
    private String userId;

    @ApiModelProperty(value = "IP地址")
    private String ip;

    @ApiModelProperty(value = "城市")
    private String city;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值