参考:https://www.cnblogs.com/wuhao-0206/p/12576780.html
https://www.jianshu.com/p/fffc41b5fbd2
https://www.cnblogs.com/superjie/p/9722147.html
mongodb中涉及到sprign data 得先了解下:
Spring Data简介Spring Data 是spring的组件之一,主要目的是为了让开发者再工作中能更加轻松的完成CURD,简化代码应该是所有框架的目的吧。今天介绍的Spring-data-mongodb只是其中的一个模块而已,Spring团队的强大不言而喻,有兴趣的请移步官网查看更多模块。
springdata
Spring Data Jpa 方法定义规范网上的博文关于这部分大同小异,这里只贴部分内容,详细规则可以参考官方文档。这些方法只是在特定情况下才用的到,比如MongoRepository不能完成的工作,但是在本人实际工作中MongoRepository已经覆盖了9成以上的需求,如果你感觉有什么需求它完成不了,很有可能是没有找对方法。
Spring-Data-Jpa
mongodb的配置:
pom文件
org.springframework.boot
spring-boot-starter-data-mongodb
yml文件
data:
mongodb:
database: mymongodb
host: 49.235.125.47
port: 27017
最重要的就是实体类和dao接口层:
实体类实体类上通过
@document(collection = “c_room_user”)注解给其动态确定集合(相当于表)
@Field(“room_id”)注解给其动态确定文档(相当于字段)
package com.example.dtest.mongodbTestService.entity;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
@Data
@document(collection = "c_room_user")
public class RoomUser implements Serializable {
private static final long serialVersionUID = 8999970788523520007L;
private String _id;
@Field("room_id")
private String roomId;
@Field("user_id")
private String userId;
@Field("mode")
private String mode;
@Field("staffType")
private String staffType;
@Field("taskId")
private String taskId;
}
对其真正操作在dao层,继承MongoRepository类就可以了!
有了MongoRepository类,就可以进行对mongodb数据库的增删改查了
MongoRepository提供许多源方法,可以完成对数据库的基本操作
当然,若基本方法满足不了需要,可以自写方法,MongoRepository根据方法名来进行语句解析,这就会用到
Spring-Data-Jpa
的知识了
package com.example.dtest.mongodbTestService.dao; import com.example.dtest.mongodbTestService.entity.RoomUser; import org.springframework.data.mongodb.repository.MongoRepository; public interface RoomUserRepository extends MongoRepository{ RoomUser findByRoomId(String roomId); // List getByRoomId(String roomId); RoomUser findByUserId(String userId); }
基本上就完成了,然后就是service和controller的了:
package com.example.dtest.mongodbTestService.service;
import com.example.dtest.mongodbTestService.entity.RoomUser;
public interface IRoomUserService {
void save(RoomUser roomUser);
RoomUser findByRoomId(String roomId);
// List getByRoomId(String roomId);
void delRoomUser(RoomUser roomUser);
}
package com.example.dtest.mongodbTestService.service;
import com.example.dtest.mongodbTestService.dao.RoomUserRepository;
import com.example.dtest.mongodbTestService.entity.RoomUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RoomUserServiceImpl implements IRoomUserService {
@Autowired
private RoomUserRepository roomUserRepository;
@Override
public void save(RoomUser roomUser) {
roomUserRepository.save(roomUser);
}
@Override
public RoomUser findByRoomId(String roomId) {
return roomUserRepository.findByRoomId(roomId);
}
// @Override
// public List getByRoomId(String roomId) {
// return roomUserRepository.getByRoomId(roomId);
// }
@Override
public void delRoomUser(RoomUser roomUser) {
roomUserRepository.delete(roomUser);
}
}
package com.example.dtest.controller;
import com.example.dtest.mongodbTestService.entity.RoomUser;
import com.example.dtest.mongodbTestService.service.IRoomUserService;
import com.example.vo.Res;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/mogodb")
@Slf4j
@CrossOrigin
public class mongodbTestController {
@Autowired
IRoomUserService roomUserService;
@PostMapping("savemogodb")
public Res savemogodb(@RequestBody RoomUser roomUser, HttpServletRequest httpServletRequest){
roomUserService.save(roomUser);
return Res.success(1, "成功");
}
@PostMapping("selectmogodb")
public Res selectmogodb(@RequestBody RoomUser roomUser, HttpServletRequest httpServletRequest){
RoomUser roomUser1 = roomUserService.findByRoomId(roomUser.getRoomId());
return Res.success(roomUser1);
}
}
测试:



