版权声明: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);
}
}