栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

SpringBoot整合mongodb,从安装到使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合mongodb,从安装到使用

一、首先使用docker安装mongodb

1.创建挂载目录: 

docker volume create mongo_data_db;
docker volume create mongo_data_configdb;

2,拉取镜像

docker pull mongo:4.0.3

 3.创建容器

docker create --name mongodb -p 27017:27017 -v /data/mongodb:/data/db mongo:4.0.3

启动容器

docker start mongodb

进入容器

docker exec -it mongodb /bin/bash

 使用docker ps查看容器进程 

4.初始化管理员账号(进入容器)

# docker exec -it <容器名>  <数据库名>

docker exec -it mymongo mongo admin 

 创建最高权限用户

db.createUser({ user: 'admin', pwd: 'adminpwd', roles: [ { role: "root", db: "admin" } ] });

    user:用户名admin

  • pwd:密码adminpwd
  • role:角色root
  • db:授权使用admin库

防火墙开启27017端口,阿里云服务器,需要到阿里云管理页面添加27017端口的对外开放规则

firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=27017/tcp

然后navicat premium中连接查看

 

 二,整合spring data mongodb操作数据

1.集成spring data mongodb,在项目Pom文件中引入依赖


    org.springframework.boot
    spring-boot-starter-data-mongodb

2.application.yml配置连接

org.springframework.boot.autoconfigure.mongo.MongoProperties 负责加载MonoDB配置

27017是MongoDB默认的端口,test是内置的数据库。如果MongoDB使用了--auth选项启动,则需要使用用户登录,则使用如下方式链接

spring:
  data:
    mongodb:
      uri: mongodb://test:123456@192.168.161.3:27017/testdb

上边是单机配置,如果是集群参考

    单机模式:mongodb://name:pwd@ip:port/database
    集群模式:mongodb://name:pwd@ip1:port1,ip2:port2/database

在项目入口启动类上面加一个注解@EnableMongoAuditing。开启Mongodb审计功能.

 接下来就可以写crud了

首先创建实体类

@Document(collection="article")//集合名
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Article  implements Serializable {

     private static final long serialVersionUID = 1L;

    @Id
    private String id;

    @Indexed
    private String author;
    private String title;
    @Field("msgContent")
    private String content;

    @CreatedDate
    private Date createTime;
    private List reader;


}

 

这里注意:

  1. 一定要实现Serializable 接口,否则在序列化的时候会报错。
  2. @Document(collection=“article”) 表示:操作的集合为:article。
  3. 另外,针对@CreatedDate注解,也和jpa用法一样,创建时会自动赋值,需要在启动类中添加@EnableMongoAuditing注解使其生效!
  4. 可使用@Field注解,可指定存储的键值名称,默认就是类字段名。如设置@Field("msgContent")
  5. @Id主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。
  6. @Indexed声明该字段需要加索引,加索引后以该字段为条件检索将大大提高速度。
    唯一索引的话是@Indexed(unique = true)。

Dao接口可以按照自己需要集成Repository,CrudRepository,PagingAndSortingRepository,或者继承功能最全的 MongoRepository均可,如下

public interface ArticleDao extends MongoRepository {
        //支持关键字查询,和JPA的用法一样
        Article findByAuthor(String author);

       Page findAll(Pageable pageable);
}

在Controller里,可以自动注册ArticleDao

@Autowired
private Articledao;

@GetMapping("/all")
public List page(int page,int size){
  Pageable pageable = PageRequest.of(page,size);
  Page result =  dao.findAll(pageable);
  return result.getContent();
}

@GetMapping("/queryOne")
public Article queryDetail(String id){
  Optional optional = dao.findById(id);
  return optional.get();
}

今年五一,拿个博客五一勋章 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号