SpringBoot简单整合MongoDB

1.先导入相关依赖(pom.xml)

主要是spring-boot-starter-parent和spring-boot-starter-data-mongodb

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

2.配置信息(application.properties)

无密码配置

spring.data.mongodb.uri=mongodb://127.0.0.1:27017/your-database-name

有密码配置

spring.data.mongodb.uri=mongodb://username:password@127.0.0.1:27017/your-database-name

3.创建配置信息对应的数据库名再创建集合名

使用Navicat创建集合类似这样:

4.创建实体类(Person.java)

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;


/**
 * 使用@Document注解指定集合名称
 */
@Data
@Document(collection="persons")
public class Person implements Serializable {
    /**
     * 使用@Id注解指定MongoDB中的 _id 主键
     */
    @Id
    private String id; // id类型为String时能够自动生成不需要传id参数,而为Long时不能自动生成需要传id参数
    private String userName;
    private String passWord;
    private Integer age;
    private Date createTime;
}

5.使用Mongo Template 对 MongoDB 进行简单增删改查操作

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
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.web.bind.annotation.*;

import java.util.List;



@RestController
@RequestMapping("/testMongoDB")
public class TestController {
    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 增
     */
    @PostMapping
    public BaseResult insert(@RequestBody Person person) {
        // 注意:插入的person实体类和集合名不一致时需要有@Document(collection="persons")注解(一致则可以不用注解)
        mongoTemplate.insert(person);
        return BaseResult.success();
    }
    /**
     * 删
     */
    @DeleteMapping("/{id}")
    public BaseResult remove(@PathVariable("id") String id) {
        // 查询条件
        Query query = new Query(Criteria.where("id").is(id));
        // 删除方法 Person.class为对应实体类 persons为对应集合名
        mongoTemplate.remove(query, Person.class, "persons");
        return BaseResult.success();
    }

    /**
     * 改
     */
    @PutMapping
    public BaseResult update(@RequestBody Person person){
        // 查询条件
        Query query = new Query(Criteria.where("id").is(person.getId()));
        // 更新内容
        Update update = new Update().set("age",person.getAge()).set("userName", person.getUserName());
        return BaseResult.success(mongoTemplate.updateFirst(query, update, Person.class, "persons"));
    }

    /**
     * 根据id查
     */
    @GetMapping("/{id}")
    public BaseResult queryById(@PathVariable("id") String id){
        // 查询条件
        Query query = new Query(Criteria.where("id").is(id));
        Person person = mongoTemplate.findOne(query, Person.class, "persons");
        return BaseResult.success(person);
    }

    /**
     * 根据条件和分页查
     */
    @PostMapping("/query")
    public BaseResult query(@RequestBody PersonVo personVo){
        // 查询条件
        Query query = new Query(Criteria.where("age").is(personVo.getAge()).and("userName").is(personVo.getUserName()));
        // 分页参数(pageNum从0开始)
        Pageable pageable = PageRequest.of(personVo.getPageNum(), personVo.getPageSize());
        // 分页查询结果
        List<Person> personList = mongoTemplate.find(query.with(pageable), Person.class);
        return BaseResult.success(personList);
    }

}

参考资料:SpringBoot 整合 MongoDB 超详细(一)

                  SpringBoot集成MongoDB(超详细)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值