zoukankan      html  css  js  c++  java
  • Spring Boot整合Mongodb

    参考博客: https://www.cnblogs.com/ityouknow/p/6828919.html, https://blog.csdn.net/stronglyh/article/details/81024588

    MongoDB 简介

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSql 数据库中比较热门的一种。
    
    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
    
    传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB 是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB 对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
    
    MongoDB 中的一条记录就是一个文档,是一个数据结构,由字段和值对组成。MongoDB 文档与 JSON 对象类似。字段的值有可能包括其它文档、数组以及文档数组。MongoDB 支持 OS X、Linux 及 Windows 等操作系统,并提供了 Python,PHP,Ruby,Java及 C++ 语言的驱动程序,社区中也提供了对 Erlang 及 .NET 等平台的驱动程序。
    
    MongoDB 的适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。对事物支持较弱,不适用复杂的多文档(多表)的级联查询。文中演示 Mongodb 版本为 3.5。

    mongodb的安装在这就不累述了,win版本的去官网下载,然后一直下一步即可,安装完之后需要db位置,类似命令如下mkdir db,然后进入到mongodb安装目录MongoDBServer4.0in,执行命令mongod --dbpath XX路径/db

    然后再MongoDBServer4.0in目录下执行命令mongo.exe,即可进入mongodb语句输入栏

    我们在mongo命令栏中输入show databases;看到默认有三个数据库,也可以使用命令 show dbs


    Springboot中增加MongoDB

    <dependencies>
        <dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency> 
    </dependencies>
    在 application.properties 中添加配置, 其中name是用户名,pass是密码
    spring.data.mongodb.uri = mongodb://name:pass@localhost:27017/test
    多个 IP 集群可以采用以下配置:
    spring.data.mongodb.uri = mongodb://user:pwd@ip1:port1,ip2:port2/database
     
    application.yml内容如下: 由于我是本地安装的mongodb,所以没有用户名和密码; 有用户名和密码的按照上面的格式写.
    spring:
        data:
            mongodb:
                uri: mongodb://localhost:27017/test
                #uri: mongodb://192.168.1.1:20000,192.168.1.2:20000,192.168.252.12:20000/test

    MongoTestC.java

    package com.example.smybatis.controller;
    
    import com.example.smybatis.dao.MongoTestDao;
    import com.example.smybatis.model.MongoTest;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class MongoTestC {
    
        @Autowired
        private MongoTestDao mtdao;
    
        @GetMapping(value="/test1")
        public void saveTest() throws Exception {
            MongoTest mgtest=new MongoTest();
            mgtest.setId(11);
            mgtest.setAge(33);
            mgtest.setName("ceshi");
            mtdao.saveTest(mgtest);
        }
    
        @GetMapping(value="/test2")
        public MongoTest findTestByName(){
            MongoTest mgtest= mtdao.findTestByName("ceshi");
            System.out.println("mgtest is "+mgtest);
            return mgtest;
        }
    
        @GetMapping(value="/test3")
        public void updateTest(){
            MongoTest mgtest=new MongoTest();
            mgtest.setId(11);
            mgtest.setAge(44);
            mgtest.setName("ceshi2");
            mtdao.updateTest(mgtest);
        }
    
        @GetMapping(value="/test4")
        public void deleteTestById(){
            mtdao.deleteTestById(11);
        }
    }
    

    MongoTestDao.java

    package com.example.smybatis.dao;
    
    import com.example.smybatis.model.MongoTest;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.data.mongodb.core.query.Criteria;
    import org.springframework.data.mongodb.core.query.Query;
    import org.springframework.data.mongodb.core.query.Update;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MongoTestDao {
    
        @Autowired
        private MongoTemplate mongoTemplate;
    
        /**
         * 创建对象
         */
        public void saveTest(MongoTest test) {
            mongoTemplate.save(test);
        }
    
        /**
         * 根据用户名查询对象
         * @return
         */
        public MongoTest findTestByName(String name) {
            Query query=new Query(Criteria.where("name").is(name));
            MongoTest mgt =  mongoTemplate.findOne(query , MongoTest.class);
            return mgt;
        }
    
        /**
         * 更新对象
         */
        public void updateTest(MongoTest test) {
            Query query=new Query(Criteria.where("id").is(test.getId()));
            Update update= new Update().set("age", test.getAge()).set("name", test.getName());
            //更新查询返回结果集的第一条
            mongoTemplate.updateFirst(query,update,MongoTest.class);
            //更新查询返回结果集的所有
            // mongoTemplate.updateMulti(query,update,TestEntity.class);
        }
    
        /**
         * 删除对象
         * @param id
         */
        public void deleteTestById(Integer id) {
            Query query=new Query(Criteria.where("id").is(id));
            mongoTemplate.remove(query,MongoTest.class);
        }
    }
    

    MongoTest.java

    package com.example.smybatis.model;
    
    public class MongoTest {
        private Integer id;
        private Integer age;
        private String name;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    下面我们启动程序进行测试

    1)新增

    我们先在浏览器输入http://localhost:1234/test1

    调用了controller中的新增方法,此时数据库应该有值,我们执行相关命令看一下

    我们发现,我们使用use test命令创建新库的时候,当库里还没有表的时候,我们使用show dbs是看不到这个库的,

    当我们在浏览器敲了回车之后,我们发现可以看到test库了,同时test库中也有了mongoTest表,使用db.mongoTest.find()命令就可以看到数据了,符合要求

    2)查询

    我们在浏览器输入http://localhost:1234/test2

    即可查看到刚才插入的那条数据

    3)修改

    我们在浏览器输入http://localhost:1234/test3

    然后去数据库看一下

    果然发生了变化

    4)删除

    我们在浏览器输入http://localhost:1234/test4

    然后去数据库看一下

    我们发现,数据没有了,因为已经被删掉了,但是表还是存在的,库也可以看到

  • 相关阅读:
    NS2 nam中节点及数据流颜色设置
    JSF简单介绍
    深入浅出谈开窗函数(一)
    BZOJ2440(全然平方数)二分+莫比乌斯容斥
    怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控
    Java实现BASE64编解码
    博弈 个人 见解
    【剑指offer】第一个仅仅出现一次的字符
    cocos2d基础篇笔记四
    SSL连接建立过程分析(1)
  • 原文地址:https://www.cnblogs.com/xumBlog/p/10730483.html
Copyright © 2011-2022 走看看