SpringBoot 整合 MongoDB 多方位操作详解

前言

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

安装教程:菜鸟教程

直接看教程,下载安装,网速的我这里有百度网盘,需要的自取 : 链接:https://pan.baidu.com/s/15ggY5ZKYFDvb2a3o9e81bQ
提取码:f6k9

基本概念

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

基本操作

命令描述操作类型
db查看当前数据库数据库
show dbs查看所有数据库数据库
use runoob(数据库名字)use 有则切换数据库,没有就创建当前名称的数据库数据库
db.runoob.insert({“name”:“你好啊”})插入数据到 runoob 数据库中,如果新建数据库 show dbs无法查看。数据库
db.dropDatabase()删除当前数据库,删除成功后 执行 show dbs 确认是否删除数据库
db.createCollection()创建集合 db.createCollection(“hello”)集合(表)
show collections查看集合集合(表)
db.hello.drop()db(表示当前数据库) .hello 创建的集合 drop 删除集合(表)
db.hello.insert()db.col.insert({“title”:“小明”,“age”:10})文档(行数据)
db.hello.find()查询当前集合的文档信息文档(行数据)

整合

pom.xml

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

使用 MongoTemplate 来实现 crud

yml配置

server:
  port: 8080
spring:
  data:
    mongodb:
      host: "127.0.0.1"
      database: test
      port: 27017

27017 默认端口 test 是数据库 如果是默认的就无需修改,看自己情况来决定。

bean

实体类中定义文档的名字:

/**
 * @Author qrn
 * @Title
 * @Date 2021/5/26 17:30
 * @time 17:30
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "user")
public class User {
    @Id
    private Integer id;
    private String title;
    private String name;
    private Integer age;
}

@Document(collection = “user”) : 意思就是 在当前数据库中,创建文档,(表),如果没有,在添加数据的时候

会创建文档,然后再插入数据到文档中。

ServerImpl

/**
 * @Author qrn
 * @Title
 * @Date 2021/5/26 18:04
 * @time 18:04
 */
@Service
public class UserServerImpl implements IUserServer {
    @Autowired
    MongoTemplate mongoTemplate;

    /**
     * 添加文档
     * @param user
     */
    @Override
    public void saveUser(User user) {
        mongoTemplate.save(user);
    }

    /**
     * 根据id 获取当前文档信息
     * @param id
     * @return
     */
    @Override
    public User getUser(Integer id) {
        return mongoTemplate.findById(id,User.class);
    }

    /**
     * 删除文档信息,这里的删除是先查询当前文档信息,然后在删除
     * @param id
     */
    @Override
    public void removeUser(Integer id) {
        mongoTemplate.remove(mongoTemplate.findById(id, User.class));
    }

    /**
     * 获取所有的文档信息
     * @return
     */
    @Override
    public List<User> listUser() {
        return mongoTemplate.findAll(User.class);
    }


}

Controller

/**
 * @Author qrn
 * @Title
 * @Date 2021/5/26 20:48
 * @time 20:48
 */
@RestController
@RequestMapping("/user/")
public class UserController {

    @Autowired
    IUserServer iUserServer;


    @Autowired
    UserRepository userRepository;


    /**
     * 添加文档数据
     * @param user
     * @return
     */
    @RequestMapping("saveUser")
    public String saveUser(User user){
        iUserServer.saveUser(user);
        return  "添加成功";
    }

    /**
     * 获取当前文档内容
     * @param id
     * @return
     */
    @RequestMapping("getUser")
    public User getUser(Integer id){
      return iUserServer.getUser(id);
    }

    /**
     * 当前文档 user 所有内容
     * @return
     */
    @RequestMapping("listUser")
    public List<User> listUser(){
        return iUserServer.listUser();
    }

    /**
     * 删除文档
     * @param id
     * @return
     */
    @RequestMapping("removeUser")
    public String removeUser(Integer id){
        iUserServer.removeUser(id);
        return  "删除成功";
    }

JPA操作

默认就支持 jpa的操作,无需加入依赖。

Repository
/**
 * @Author qrn
 * @Title
 * @Date 2021/5/27 11:58
 * @time 11:58
 * 使用 jpa 去操作 MongoDB
 */
public interface UserRepository  extends CrudRepository<User, Integer> {
}

定义好接口,然后直接从jpa的方法去操作 MongoDB数据库

Controller
// 使用 jpa 来操作 MongoDB 数据库:

    /**
     * 添加文档数据
     * @param user
     * @return
     */
    @RequestMapping("saveJpaUser")
    public String saveJpaUser(User user){
        userRepository.save(user);
        return  "添加成功";
    }

    /**
     * 获取当前文档内容
     * @param id
     * @return
     */
    @RequestMapping("getJpaUser")
    public User getJpaUser(Integer id){
        return userRepository.findById(id).get();
    }

    /**
     * 当前文档 user 所有内容
     * @return
     */
    @RequestMapping("listJpaUser")
    public Iterable<User> listJpaUser(){
        return userRepository.findAll();
    }

    /**
     * 删除文档
     * @param id
     * @return
     */
    @RequestMapping("removeJpaUser")
    public String removeJpaUser(Integer id){
        userRepository.deleteById(id);
        return  "删除成功";
    }



结束

直接调用 jpa来操作数据库,很方便,不需要在去拿原生的方法来操作。

实例代码在github上面需要的请自行拉取:spring-boot-integrate 然后后续会集成更多的模块进去,需要请点个star。后续会集成更多的接口实现,有需要的请保存。

如果这篇文章,有帮助到大家的,请给作者一个一键三连,谢谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值