spring boot 连接mongodb

版权声明:Copyright ©2018-2019 凉白开不加冰 版权所有 https://blog.csdn.net/qq_21082615/article/details/91374121

介绍: MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

第一步:pom加入相关包

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

第二步:配置mongodb链接

spring:
  data:
    mongodb:
      uri: mongodb://用户名:密码@ip:27017/admin

第三步:新建数据传递dto

package com.example.pojo.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.Date;


/**
 * @Author: 凉白开不加冰
 * @Version: 0.0.1V
 * @Date: 2019/1/11
 * @Description: 用户登录信息
 **/
@Data
@Document(collection = "user_login_info")//此注解对应mongodb集合
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserLoginInfo implements Serializable {

    private static final long serialVersionUID = -8985545025018238754L;
    private String id;
    private int userId;
    private String username;
    @CreatedDate
    private Date loginDate;
}

第四步:实现操作mongodb接口及实现类

package com.example.service;

import com.example.pojo.dto.UserLoginInfo;

/**
 * @Author: 凉白开不加冰
 * @Version: 0.0.1V
 * @Date: 2019/1/11
 * @Description: 用户登录记录接口
 **/
public interface UserLoginInfoService {
    UserLoginInfo saveUserLoginInfo(UserLoginInfo msg);

    UserLoginInfo findUserLoginInfoUserId(Integer userId);

    Long updateUserLoginInfoById(String id, String username);

    UserLoginInfo delUserLoginInfoById(String id);
}
package com.example.service.impl;

import com.example.pojo.dto.UserLoginInfo;
import com.example.service.UserLoginInfoService;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

/**
 * @Author: 凉白开不加冰
 * @Version: 0.0.1V
 * @Date: 2019/1/11
 * @Description: 用户登录消息实现类
 **/
@Service
public class UserLoginInfoServiceImpl implements UserLoginInfoService {

    @Autowired
    MongoTemplate mongoTemplate;

    @Override
    public UserLoginInfo saveUserLoginInfo(UserLoginInfo info) {
        mongoTemplate.save(info);
        return info;
    }

    @Override
    public UserLoginInfo findUserLoginInfoUserId(Integer userId) {
        Query query = new Query(Criteria.where("userId").is(userId));
        return mongoTemplate.findOne(query, UserLoginInfo.class);
    }

    @Override
    public Long updateUserLoginInfoById(String id, String username) {
        Query query = new Query(Criteria.where("id").is(id));
        Update update = Update.update("username", username);
        UpdateResult updateResult = mongoTemplate.updateMulti(query, update, UserLoginInfo.class);
        return updateResult.getMatchedCount();
    }

    @Override
    public UserLoginInfo delUserLoginInfoById(String id) {
        Query query = new Query(Criteria.where("_id").is(id));
        return mongoTemplate.findAndRemove(query, UserLoginInfo.class);
    }


}

第五步:随便写个访问控制层

package com.example.controller;

import com.example.pojo.dto.UserLoginInfo;
import com.example.service.UserLoginInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: 凉白开不加冰
 * @Version: 0.0.1V
 * @Date: 2019/1/11
 * @Description:
 **/
@RestController
public class UserLoginInfoController {

    @Autowired
    private UserLoginInfoService userLoginInfoService;

    /**
     * 新增用户登录记录到mongodb
     * @param info
     * @return
     */
    @PostMapping("add")
    public UserLoginInfo add(@RequestBody UserLoginInfo info) {
        return userLoginInfoService.saveUserLoginInfo(info);
    }


    /**
     * 根据用户id查询数据
     * @param userId
     * @return
     */
    @GetMapping("find/{userId}")
    public UserLoginInfo findUserLoginInfoUserId(@PathVariable Integer userId) {
        return userLoginInfoService.findUserLoginInfoUserId(userId);
    }

    /**
     * 根据mongodb id删除记录
     * @param id
     * @return
     */
    @GetMapping("del/{id}")
    public UserLoginInfo delUserLoginInfoById(@PathVariable String id) {
        return userLoginInfoService.delUserLoginInfoById(id);
    }

    /**
     * 根据mongodb id修改用户名
     * @param id
     * @return
     */
    @GetMapping("update/{id}/{username}")
    public Long updateUserLoginInfoById(@PathVariable String id, @PathVariable String username) {
        return userLoginInfoService.updateUserLoginInfoById(id, username);
    }

}

上面只是简单的增删改查,复杂的操作,大家可以去百度查查,下面把源码也上传上来了,感兴趣的可以下载

猜你喜欢

转载自blog.csdn.net/qq_21082615/article/details/91374121