zoukankan      html  css  js  c++  java
  • Spring整合MongoDB

    官方文档地址:https://docs.spring.io/spring-data/mongodb/docs/3.1.3/reference/html/#introduction

    一、 Spring整合MongoDB 

    1、依赖

            <!--mongo-->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-mongodb</artifactId>
                <version>3.1.3</version>
            </dependency>
    
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-sync</artifactId>
                <version>4.1.1</version>
            </dependency>

    将Spring的版本更改为 5.3.3: <spring.framework.version>5.3.3</spring.framework.version>

    若springboot版本为2.4.2,则Spring版本就是 5.3.3

    2、将MongoClient交给Spring IOC容器管理

     MongoConfig.java

    @Configuration
    public class MongoConfig {
    
        @Bean
        public MongoClient mongoClient() {
            // 使用更高级的配置MongoClientSettings(请注意,这些不是建议值)
    //        MongoClientSettings settings = MongoClientSettings.builder()
    //                .applyConnectionString(new ConnectionString("mongodb://10.13.130.1:37017"))
    //                .applyToConnectionPoolSettings(builder -> ConnectionPoolSettings.builder()
    //                        .maxConnectionLifeTime(10, TimeUnit.SECONDS)
    //                        .maxWaitTime(15, TimeUnit.SECONDS)
    //                        .maxConnectionIdleTime(30, TimeUnit.SECONDS)
    //                        .maintenanceFrequency(10, TimeUnit.SECONDS)
    //                        .maintenanceInitialDelay(11, TimeUnit.SECONDS)
    //                        .minSize(10)
    //                        .maxSize(20)
    //                        .build())
    //                .build();
    //        return MongoClients.create(settings);
            return MongoClients.create("mongodb://10.13.130.1:37017");
    
        }
    
        @Bean
        public MongoDatabaseFactory mongoDatabaseFactory() {
            return new SimpleMongoClientDatabaseFactory(mongoClient(), "mitv_mall");
        }
    
        @Bean
        public MongoTemplate mongoTemplate() {
            return new MongoTemplate(mongoDatabaseFactory());
        }
    
    }

    3、简单使用示例

        @Autowired
        private MongoTemplate mongoTemplate;
    
        @Test
        void mongoTest() {
            Map<String, Object> record = new HashMap<>(4);
            record.put("_id", "1");
            record.put("name", "hello mongo");
            // 插入
            Map<String, Object> result = mongoTemplate.insert(record, "cf_products");
            // 查询
            List<Map> cfProductsMapList = mongoTemplate.findAll(Map.class,"cf_products");
        }

     数据:

    > db.cf_products.find().pretty()
    { "_id" : "1", "name" : "hello mongo" }

    二、SpringBoot整合MongoDB 

    Springboot版本为2.4.2

    1、依赖

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

     2、application.properties中配置连接信息

    #mongodb://user:pwd@ip1:port1,ip2:port2/database
    spring.data.mongodb.uri=mongodb://10.13.130.1:37017/mitv_mall

     3、简单使用示例

       @Autowired
        private MongoTemplate mongoTemplate;
    
        @Test
        void mongoTest() {
            Map<String, Object> record = new HashMap<>(4);
            record.put("_id", "1");
            record.put("name", "hello mongo");
            // 插入
            Map<String, Object> result = mongoTemplate.insert(record, "cf_products");
            // 查询
            List<Map> cfProductsMapList = mongoTemplate.findAll(Map.class,"cf_products");
        }

    MongoTeplate简介

      org.springframework.data.mongodb.core.MongoTemplate

      MongoTemplate是Spring对MongoDB支持的核心,并且是线程安全的,可以在多个实例之间复用。

      提供了创建,更新,删除和查询MongoDB的快捷操作,并提供了 domain 对象和 mongoDB document之间的映射。

      MongoDB文档和域类之间的映射是通过委托MongoConverter接口的实现来完成的。Spring提供了MappingMongoConverter实现,但您也可以编写自己的转换器

    如何_id在映射层中处理字段

       MongoDB要求您有一个_id用于所有文档的字段。如果不提供,驱动程序将为分配ObjectId一个生成的值。

      当您使用时MappingMongoConverter,某些规则将控制Java类中的属性如何映射到此_id字段:

        ① 用@Id(org.springframework.data.annotation.Id)注释的属性或字段映射到该_id字段。

        ② 没有注释但已命名的属性或字段id映射到该_id字段

       

    END.

  • 相关阅读:
    编程思想之多线程与多进程——以操作系统的角度述说线程与进程
    git 版本回退
    git 版本回退
    求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???
    求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???
    Android初学:Gradle 'HelloWorld' project refresh failed
    处理日期时间方法总结
    解决error104 connection reset by peer;socket error问题
    'utf8' codec can't decode byte 0xd1 in position 931: invalid continuation byte解决方法
    scrapy学习笔记
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/14383963.html
Copyright © 2011-2022 走看看