您的位置:首页 > 房产 > 建筑 > 金湖网页定制_简单安卓app开发_深圳市seo上词贵不贵_广州seo外包公司

金湖网页定制_简单安卓app开发_深圳市seo上词贵不贵_广州seo外包公司

2024/12/23 5:26:05 来源:https://blog.csdn.net/2301_81405087/article/details/143092659  浏览:    关键词:金湖网页定制_简单安卓app开发_深圳市seo上词贵不贵_广州seo外包公司
金湖网页定制_简单安卓app开发_深圳市seo上词贵不贵_广州seo外包公司

目录

1.什么是mongoDB?

2.Docker安装mongoDB

2.1拉取镜像

2.2创建mongo数据持久化目录 (看自己爱好,放哪里都行)

2.3启动容器

2.4创建用户

  1.使用以下命令进入容器的 MongoDB shell:

  2.创建一个用户,mongo 默认没有用户

命令解释:

3.SpringBoot整合MongoDB步骤

 1.导入依赖

2.配置

3.操作MongoDB

    第一种方式使用MongoTemplate‌工具类

  添加实体类

  测试

第二种方式使用继承MongoRepository

  添加实体类

repository层

controller层

mongoDB 中MongoRepository和MongoTemplate的区别

4.navicat连接mongoDB


 

1.什么是mongoDB?

    MongoDB是一种非关系型数据库,被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活,支持动态查询和索引,也支持json格式和bson格式的数据存储,这种格式可以支持读取和写入大量的数据。

2.Docker安装mongoDB

2.1拉取镜像

     

docker pull mongo:4.4

2.2创建mongo数据持久化目录 (看自己爱好,放哪里都行)

mkdir -p /docker_volume/mongodb/data

2.3启动容器

docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth

2.4创建用户

  1.使用以下命令进入容器的 MongoDB shell:

docker exec -it mongo mongo admin

  2.创建一个用户,mongo 默认没有用户

    

db.createUser({user: 'root',pwd: 'xgd@123',roles: [{ role: 'readWriteAnyDatabase', db: 'admin' },{ role: 'dbAdminAnyDatabase', db: 'admin' }]
});

命令解释:

-d:表示在后台运行容器,并返回容器 ID。

-i:表示交互式运行容器,保留 STDIN 打开。

--name mongo-service:为容器指定一个名称,这里为 mongo-service。

--restart=always:表示在容器退出后自动重启容器。

-p 27017:27017:将容器的 27017 端口映射到宿主机的 27017 端口。

-v ~/data/mongodata:/data:将宿主机的 ~/data/mongodata 目录挂载到容器的 /data 目录下,用于持久化存储数据。

mongo:指定要运行的镜像名称,这里为官方的 MongoDB 镜像。

3.SpringBoot整合MongoDB步骤

 1.导入依赖

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

2.配置

spring:data:mongodb:host: 你的ipport: 27017username: rootpassword: 123authenticationDatabase: admindatabase: test

3.操作MongoDB

    第一种方式使用MongoTemplate‌工具类

  添加实体类

import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;import java.io.Serializable;
import java.util.Date;/*** 映射表 test_demo*/
@Data
@Document("test_demo")
public class TestDemo implements Serializable {private static final long serialVersionUID = 1L;private String id;private String name;private Date birthDay;}

  测试

/*** MongoDB测试类* */
@SpringBootTest(classes = MongoApplication.class)
@RunWith(SpringRunner.class)
public class MongoTest1 {@Autowiredprivate MongoTemplate mongoTemplate;//保存@Testpublic void saveTest(){for (int i = 0; i < 10; i++) {TestDemo testDemo = new TestDemo();testDemo.setName("张三");testDemo.setBirthDay(new Date());mongoTemplate.save(testDemo);}TestDemo testDemo = new TestDemo();testDemo.setName("张三你吃饭了吗");testDemo.setBirthDay(new Date());mongoTemplate.save(testDemo);}//查询一个@Testpublic void saveFindOne(){TestDemo testDemo = mongoTemplate.findById("661743b77bee2f0a5739819d", TestDemo.class);System.out.println(testDemo);//TestDemo(id=661743b77bee2f0a5739819d, name=张三, birthDay=Thu Apr 11 09:58:15 CST 2024)}//条件查询@Testpublic void testQuery(){//查询字段name为张三的数据(多条件查询)Query query = Query.query(Criteria.where("name").is("张三")).with(Sort.by(Sort.Direction.DESC,"birthDay"));// 执行查询 模糊查询 只查询5条数据Query query1 = Query.query(Criteria.where("name").regex(".*?\\" + "张三" + ".*"));query.limit(5);List<TestDemo> list = mongoTemplate.find(query, TestDemo.class);List<TestDemo> list1 = mongoTemplate.find(query1, TestDemo.class);System.out.println("list:"+list);System.out.println("list1:"+list1);}//测试删除@Testpublic void testDel(){mongoTemplate.remove(Query.query(Criteria.where("name").is("张三")),TestDemo.class);}
}

第二种方式使用继承MongoRepository

  添加实体类

package com.xsp.spm.domain;import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;/*** @Author:xsp* @Description:* @name:User* @Date:2024/9/14 17:24*/@Data
@Document(collection = "users")
public class User {@Idprivate String id;@Indexed(unique = true)private String name;private Integer age;}

repository层

package com.xsp.spm.repository;import com.xsp.spm.domain.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;/*** @Author:xsp* @Description:* @name:UserRepository* @Date:2024/9/14 17:25*/
@Repository
public interface UserRepository extends MongoRepository<User, String> {}

controller层

package com.xsp.spm.controller;import com.xsp.spm.domain.User;
import com.xsp.spm.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.*;/*** @Author:xsp* @Description:* @name:UserController* @Date:2024/9/14 17:26*/
@RestController
public class UserController {@Autowiredprivate UserRepository userRepository;// 添加@PostMappingpublic User createUser(@RequestBody User user) {return userRepository.save(user);}// 详细@GetMapping("/{id}")public User getUser(@PathVariable String id) {return userRepository.findById(id).orElse(null);}// 删除@DeleteMapping("/{id}")public void deleteUser(@PathVariable String id) {userRepository.deleteById(id);}// 修改@PutMapping("/{id}")public User updateUser(@PathVariable String id, @RequestBody User user) {User userFromDb = userRepository.findById(id).orElse(null);if (userFromDb != null) {userFromDb.setName(user.getName());userFromDb.setAge(user.getAge());return userRepository.save(userFromDb);}return null;}// 列表@GetMappingpublic Iterable<User> getAllUsers() {return userRepository.findAll();}
}

mongoDB 中MongoRepository和MongoTemplate的区别

MongoRepository‌:

      特点‌:MongoRepository是Spring Data MongoDB的一部分,它提供了一种面向对象的方式来操作MongoDB。通过继承MongoRepository接口,可以很容易地实现CRUD操作和一些基本的查询操作。这种方式不需要编写原生的查询语句,使得操作更加简单和直观‌1。

‌       适用场景‌:当查询需求简单,可以通过方法名命名规则进行快速的CRUD操作时,使用MongoRepository是一个不错的选择。它适用于基本的CRUD操作和一些简单查询,但如果需要执行复杂的聚合或定制查询,可能不够灵活‌1。

MongoTemplate‌:

    特点‌:MongoTemplate是Spring Data MongoDB中更低级别的工具,它提供了更丰富的操作方法,包括条件查询、模糊查询、分页查询、数据修改和删除等。MongoTemplate允许更灵活的操作,包括原生的查询语句,提供了更大的灵活性来处理复杂的查询和数据操作‌2。

 ‌    适用场景‌:当需要执行复杂的查询或定制操作时,MongoTemplate可以弥补MongoRepository的不足。它适用于需要更多控制和灵活性的场景,如执行复杂的聚合查询或定制的数据处理任务‌

总结来说,MongoRepository适合简单的CRUD操作和一些基本的查询需求,而MongoTemplate则提供了更丰富的功能和更大的灵活性,适用于需要执行复杂查询或定制操作的场景。选择使用哪一个取决于具体的应用需求和技术栈‌

4.navicat连接mongoDB

b2536ffeae0e41f8a9fada52beb9190d.png

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com