spring boot项目中MongoDB的使用方法
程序员文章站
2024-02-26 23:07:34
前言
大家都知道mysql数据库很好用,但数据量到了千万以上了,想增加字段是非常痛苦的,这个在mongodb里就不存在,字段想怎么加就怎么加,所以也就有了想在spring...
前言
大家都知道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,再封装到一块比较好
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
参考
下一篇: Java基础知识精选 你答对了几道?