spring boot项目中MongoDB的使用方法

 更新时间:2017年09月30日 09:06:31   作者:Tomoya  
前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。下面这篇文章主要给大家介绍了关于在spring boot项目中MongoDB的使用方法,需要的朋友可以参考下。

前言

大家都知道MySQL数据库很好用,但数据量到了千万以上了,想增加字段是非常痛苦的,这个在MongoDB里就不存在,字段想怎么加就怎么加,所以也就有了想在spring-boot里用MongoDB的想法了,Github上spring-projects里有关于使用MongoDB的demo,后面会给出链接

依赖

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

//还有一个依赖,官方demo里加的有,这个应该是启动的时候帮你下载mongodb数据库的,反正我是没有成功下载下来过,一直timeout,如果系统上装的有mongodb了,就不用要这个依赖了
<dependency>
 <groupId>de.flapdoodle.embed</groupId>
 <artifactId>de.flapdoodle.embed.mongo</artifactId>
</dependency>

配置

实体类只用加一个@Id就可以了

import org.springframework.data.annotation.Id;

public class User {

 @Id
 private String id;
 private String username;

 // getter, setter
}

数据库配置

spring:
 freemarker:
 template-loader-path:
 - file:./templates
 data:
 mongodb:
  database: dbname #一般只用配置这一个就可以了,如果数据库有密码,还要配置下面几个配置
  host: 
  password:
  uri:

Repository要继承的是MongoRepository,跟踪代码可以发现MongoRepository继承的就是PagingAndSortingRepository,所以分页之类的一些简单的方法也是可以直接拿来用的,非常方便

public interface UserRepository extends MongoRepository<User, String> {
 User findByUsername(String username);
}

spring-data怎么用,这里就怎么用

关联

MongoDB在spring-boot里没法做关联,所以用MySQL做关联的 @ManyToOne 这些注解也就不能用了

经我测试,如果在Blog实体类里引入User对象,在保存Blog的时候,User对象也会保存在Blog里,如下所示

{ 
 "_id" : ObjectId("59cb127b23d8213c8dfdcad9"), 
 "_class" : "com.example.module.blog.model.Blog", 
 "title" : "hello world", 
 "content" : "hello world", 
 "inTime" : ISODate("2017-09-27T02:52:43.713+0000"), 
 "user" : {
 "_id" : ObjectId("59cb0fec23d8213930c6795a"), 
 "username" : "tomoya", 
 "inTime" : ISODate("2017-09-27T02:41:48.402+0000")
 }
}

如果修改User的username,只会修改user表里的username,blog表里的user对象里的username是不会变的,所以这里建议关联只给一个id,在查询的时候用id去查user,再封装到一块比较好

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

参考

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-mongodb

相关文章

  • 详解Java中$符的各种使用场景

    详解Java中$符的各种使用场景

    在Java编程中,我们会经常看到$符的身影,比如经常在配置文件中看到$符号作为变量占位符,用于在运行时动态地获取变量值。本文将详细介绍$符号在Java编程中的各种应用场景,以帮助您更好地理解和运用这个符号,感兴趣的小伙伴可以收藏一下
    2023-04-04
  • java代理模式与动态代理模式详解

    java代理模式与动态代理模式详解

    代理就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用
    2014-02-02
  • SpringBoot 如何编写配置文件

    SpringBoot 如何编写配置文件

    这篇文章主要介绍了SpringBoot 编写配置文件的两种方法,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • Java中BigDecimal的加减乘除、比较大小与使用注意事项

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作,下面这篇文章给大家介绍了Java中BigDecimal的加减乘除、比较大小与使用注意事项,需要的朋友可以参考下。
    2017-11-11
  • SpringBoot集成Redis并实现主从架构的实践

    SpringBoot集成Redis并实现主从架构的实践

    本文主要和大家分享一下在springboot中如何集成redis,并实现主从架构,进行数据的简单存储,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 学生信息管理系统java版

    学生信息管理系统java版

    这篇文章主要为大家详细介绍了java学生信息管理系统源代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • JavaWeb ServletConfig作用及原理分析讲解

    JavaWeb ServletConfig作用及原理分析讲解

    ServletConfig对象,叫Servlet配置对象。主要用于加载配置文件的初始化参数。我们知道一个Web应用里面可以有多个servlet,如果现在有一份数据需要传给所有的servlet使用,那么我们就可以使用ServletContext对象了
    2022-10-10
  • SpringBoot项目中定时器的实现示例

    SpringBoot项目中定时器的实现示例

    在Spring Boot项目中,你可以使用Spring框架提供的@Scheduled注解来编写定时任务,本文就来介绍一下SpringBoot项目中定时器的实现,感兴趣的可以了解一下
    2023-11-11
  • 浅谈Java中Map和Set之间的关系(及Map.Entry)

    浅谈Java中Map和Set之间的关系(及Map.Entry)

    这篇文章主要介绍了浅谈Java中Map和Set之间的关系(及Map.Entry),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java过滤特殊字符操作(xss攻击解决方案)

    java过滤特殊字符操作(xss攻击解决方案)

    这篇文章主要介绍了java过滤特殊字符操作(xss攻击解决方案),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论