springBoot 使用MongoDB

本文介绍了如何在Spring Boot项目中集成MongoDB,包括添加依赖、配置连接、创建DAO接口及其实现,展示了基本的CRUD操作实例。通过测试类演示了保存、查询、更新和删除学生对象的方法。

springBoot 使用MongoDB 例子

项目地址(持续更新中):https://github.com/lizhongxiang12138/demo-mongo

test目录下有测试的列子

添加依赖

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

application.yml 配置

spring:
   data:
     mongodb:
       uri: mongodb://用户名:密码@地址:端口/数据库

添加dao接口

package com.lzx.mongo.demomongo.dao;

import com.lzx.mongo.demomongo.mogonentity.Student;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

public interface StudentDao extends MongoRepository<Student,String> {


    List<Student> findByNameContains(String name);

}

测试

测试类

package com.lzx.mongo.demomongo.dao;


import com.lzx.mongo.demomongo.mogonentity.Student;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.linuxprobe.luava.json.JacksonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.test.context.junit4.SpringRunner;

import java.util.List;
import java.util.Map;

@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class StudentDaoTest {

    @Autowired
    StudentDao studentDao;

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 保存测试
     */
    @Test
    public void save(){
        Student student = new Student();
//        @Id
//        private String id;
        //没有设置id时是新增
        student.setId("60acc0b7df06d613edf45f33");
        student.setName("关羽");
        student.setAge("500");
        student.setCountry("汉");
        student.setJob("将军");
        //student.setCDate(new Date());
        Student save = studentDao.save(student);



        log.info(JacksonUtils.toJsonString(save));
    }

    /**
     * 查询测试
     */
    @Test
    public void findAll(){
        //根据id查询
        Student all = studentDao.findById("60acc0b7df06d613edf45f33").orElse(null);
        log.info(JacksonUtils.toJsonString(all));

        //dao 自定义方法查询
        List<Student> findByNameContains = studentDao.findByNameContains("张");
        log.info(JacksonUtils.toJsonString(findByNameContains));

        //动态定义条件查询
        Criteria c = new Criteria();
        c.and("id").is("60acc0b7df06d613edf45f");
        c.and("job").regex(".*将.*");
        Query query = new Query(c);
        List<Student> students = mongoTemplate.find(query, Student.class);
        log.info(JacksonUtils.toJsonString(students));
    }

    /**
     * 更新指定字段
     */
    @Test
    public void updateField(){
        Query query = new Query(Criteria.where("id").is("60acc0b7df06d613edf45f33"));
        Update update = new Update();
        update.set("job","蜀国将军");
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, Student.class);
        log.info("更新{}条记录",updateResult.getModifiedCount());
    }

}
### 回答1: Spring Boot可以很方便地集成MongoDB,只需要在pom.xml文件中添加MongoDB的依赖,然后在application.properties文件中配置MongoDB的连接信息即可。 具体步骤如下: 1. 在pom.xml文件中添加MongoDB的依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. 在application.properties文件中配置MongoDB的连接信息: ``` spring.data.mongodb.uri=mongodb://localhost:27017/mydb ``` 其中,mongodb://localhost:27017是MongoDB的连接地址,mydb是数据库名称。 3. 创建MongoDB的实体类: ``` @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // 省略getter和setter方法 } ``` 其中,@Document注解表示该类对应MongoDB中的一个集合,collection属性指定集合名称;@Id注解表示该属性为MongoDB中的_id字段。 4. 创建MongoDB的Repository接口: ``` @Repository public interface UserRepository extends MongoRepository<User, String> { } ``` 其中,@Repository注解表示该接口为Spring的Repository组件;MongoRepository是Spring Data MongoDB提供的Repository接口,继承它可以获得基本的CRUD操作。 5. 在Service中使用Repository: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public User save(User user) { return userRepository.save(user); } public User findById(String id) { return userRepository.findById(id).orElse(null); } public List<User> findAll() { return userRepository.findAll(); } public void deleteById(String id) { userRepository.deleteById(id); } } ``` 其中,@Autowired注解表示自动注入UserRepository;save、findById、findAll、deleteById方法分别对应MongoDB的插入、查询、查询所有、删除操作。 以上就是使用Spring Boot集成MongoDB的基本步骤。 ### 回答2: Spring Boot是一个非常流行的Java框架,它简化了Java应用程序的开发过程,并降低了应用程序的复杂性。而MongoDB是一个非关系型数据库,它以文档的形式存储数据,支持跨平台、集群等特点。Spring Boot结合MongoDB可以轻松使用非关系型数据库存储应用中的数据。下面我将介绍Spring Boot如何集成MongoDB。 1.添加MongoDB驱动 要使用MongoDB,需要添加MongoDB的驱动:mongo-java-driver。如果使用Maven,则必须在pom.xml文件中添加以下依赖关系: ``` <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.6.4</version> </dependency> </dependencies> ``` 2.配置MongoDB连接信息 在application.properties文件中配置MongoDB的连接信息,示例如下: ``` spring.data.mongodb.database=mydb spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 ``` 这里,我们配置了MongoDB数据库的名称、主机名和端口号。 3.创建实体类 使用MongoDB时,必须创建实体类,并将其映射到MongoDB集合中的文档。例如,以下是一个用户实体类: ``` @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // getter/setter方法省略 } ``` 在这个实体类中,@Document注解用于指定集合的名称。@Id注解用于指定文档的唯一标识符。此外,还需要编写getter和setter方法。 4.创建MongoDB存储库接口 创建一个存储库接口以执行CRUD操作。以下是一个用户存储库接口示例: ``` public interface UserRepository extends MongoRepository<User, String> { User findByName(String name); List<User> findByAge(int age); } ``` 这个接口继承自MongoRepository,并定义了两个查询方法。 5.编写业务逻辑 在编写业务逻辑时,使用刚刚创建的存储库接口来保存和检索数据。以下是一个用户服务类示例: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public void save(User user) { userRepository.save(user); } public User findByName(String name) { return userRepository.findByName(name); } public List<User> findByAge(int age) { return userRepository.findByAge(age); } public void delete(User user) { userRepository.delete(user); } } ``` 在这个服务类中,使用@Autowired注解注入UserRepository存储库接口。然后,使用这个接口来执行CRUD操作。 至此,我们已经学习了如何在Spring Boot中使用MongoDB。这种集成方式非常简单,适合于快速开发、原型开发或试验。如果后期需要更高的性能或更丰富的功能,可以使用更专业的非关系型数据库技术。 ### 回答3: SpringBoot是一个基于Spring框架的快速开发框架,它提供了很多开箱即用的功能,其中就包括对MongoDB的支持。MongoDB是一个NoSQL数据库,它以文档为存储单位,具有高可扩展性、高性能、易用性和开放性等优点,越来越受到开发者的青睐。 SpringBootMongoDB的支持,主要是通过Spring Data MongoDB来实现的。Spring Data MongoDB是Spring Data家族的一员,它提供了丰富的API和功能,让我们可以轻松地与MongoDB打交道,实现高效的数据管理和操作。 在使用SpringBoot开发MongoDB应用时,我们需要先添加MongoDB的依赖,可以在pom.xml文件中加入: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 然后,在application.properties文件中配置MongoDB的连接信息: ``` spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydb spring.data.mongodb.username=myuser spring.data.mongodb.password=mypassword ``` 其中,host表示MongoDB的连接地址,port表示MongoDB的连接端口,database表示要使用的数据库名称,username和password表示连接MongoDB所需的用户名和密码。 接下来,我们就可以在代码中使用MongoDB了,例如: ```java @Repository public interface UserRepository extends MongoRepository<User, String> { List<User> findByFirstName(String firstName); } ``` 这段代码定义了一个UserRepository接口,它扩展自MongoRepository<User, String>,表示这是一个MongoDB数据访问接口。其中,User表示被操作的数据类型,String表示该数据类型的唯一标识。 接口中的方法findByFirstName(String firstName)表示根据firstName字段查找User数据,并返回符合条件的数据集合。 最后,我们可以在SpringBoot应用的入口类中启动MongoDB: ```java @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } } ``` 这样,我们就完成了SpringBootMongoDB的集成和使用使用SpringBootMongoDB,可以轻松地实现高效的数据管理和操作,为我们的应用开发带来很大的便利和效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值