MongoDB之整合SpringBoot

MongoTemplate 方式

依赖

xml 复制代码
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
  </dependency>

创建账户

shell 复制代码
# 切换到数据库
use study
# 创建账户
db.createUser({user:"root",pwd:"123456",roles:[{role:"dbOwner",db:"study"}]})

配置文件

properties 复制代码
spring.data.mongodb.host=192.168.204.156
spring.data.mongodb.port=27017
spring.data.mongodb.database=study
spring.data.mongodb.password=123456
spring.data.mongodb.username=root

测试

java 复制代码
@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void testAddData() {
        // 添加
        Goods goods = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();
        mongoTemplate.save(goods, "goods");
        // 查询
        List<Goods> list = mongoTemplate.findAll(Goods.class);
        list.forEach(item -> System.out.println(item.toString()));
    }


}



@Data
@Builder
public class Goods {

    private String id;
    private String item;
    private Integer qty;

    private Size size;

    private String status;

}


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Size {
    private Float h;
    private Float w;
    private String uom;

}

增删改查

java 复制代码
import com.example.springbootmongodbdemo.SpringbootMongodbDemoApplication;
import com.example.springbootmongodbdemo.model.Goods;
import com.example.springbootmongodbdemo.model.Size;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.junit.jupiter.api.Test;
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.Query;
import org.springframework.data.mongodb.core.query.Update;

import java.util.List;

import static org.springframework.data.mongodb.core.query.Criteria.where;

@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void addData() {
        Goods build = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();
        mongoTemplate.save(build, "goods");
    }

    @Test
    public void findAll() {
        List<Goods> all = mongoTemplate.findAll(Goods.class);
        all.forEach(item -> System.out.println(item.toString()));
    }

    @Test
    public void findById() {
        Goods build = Goods.builder().id("63bbdac2fa9405a15160f476").build();
        Query query = new Query(where("id").is(build.getId()));
        List<Goods> goods = mongoTemplate.find(query, Goods.class);
        System.out.println(goods.toString());
    }

    @Test
    public void findBy() {
        // 匹配r结尾的数据
        Query query = new Query(where("item").regex("^.*r$"));
        List<Goods> goods = mongoTemplate.find(query, Goods.class);
        System.out.println(goods.toString());
    }

    @Test
    public void update() {
        Goods build = Goods.builder().id("63bbdac2fa9405a15160f476").build();
        Query query = new Query(where("id").is(build.getId()));
        Update update = Update.update("item", "canvas02");
        UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Goods.class);
        System.out.println(updateResult);
    }

    @Test
    public void del() {
        Goods build = Goods.builder().id("63d0eff1d20d7f153665244d").build();
        Query query = new Query(where("id").is(build.getId()));
        DeleteResult remove = mongoTemplate.remove(query, Goods.class);
        System.out.println(remove);
    }
}

MongoRepository 方式

依赖&配置

同上。

实体类

java 复制代码
// 关键注解:@Document,@Id
@Data
@Builder
@Document("goods")
public class Goods {

    @Id
    private String id;
    private String item;
    private Integer qty;

    private Size size;

    private String status;

}

接口类

java 复制代码
public interface GoodsRepository extends MongoRepository<Goods, String> {
}

测试

java 复制代码
@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {

    @Resource
    private GoodsRepository goodsRepository;

    @Test
    public void testAddData() {
        Goods build = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();
        Goods save = goodsRepository.save(build);
        System.out.println(save);
    }
}
相关推荐
不会就选C.1 小时前
【开源分享】健康饮食管理系统(双端+论文)
java·spring boot·开源·毕业设计
编程、小哥哥1 小时前
Java求职者面试:从Spring Boot到微服务的技术点解析
java·spring boot·redis·微服务·spring security·高并发·面试题
Code哈哈笑1 小时前
【基于Spring Boot 的图书购买系统】深度讲解 用户注册的前后端交互,Mapper操作MySQL数据库进行用户持久化
数据库·spring boot·后端·mysql·mybatis·交互
Uranus^1 小时前
深入解析Spring Boot与Kafka集成:构建高性能消息驱动应用
spring boot·kafka·消息队列·分布式系统
悄悄地努力2 小时前
IDEA 新建 SpringBoot 项目时,没有高版本 SpringBoot 可选
java·spring boot·intellij-idea
Hello World......6 小时前
Java求职面试揭秘:从Spring到微服务的技术挑战
大数据·hadoop·spring boot·微服务·spark·java面试·互联网大厂
Hello World......6 小时前
互联网大厂Java面试:从Spring到微服务的全面探讨
java·spring boot·spring cloud·微服务·面试·技术栈·互联网大厂
拾贰_C7 小时前
【SpringBoot】MyBatisPlus(MP | 分页查询操作
java·spring boot·后端·spring·maven·apache·intellij-idea
Uranus^10 小时前
深入解析Spring Boot与JUnit 5的集成测试实践
spring boot·单元测试·集成测试·junit 5·mockito
秋野酱15 小时前
Spring Boot 项目的计算机专业论文参考文献
java·spring boot·后端