ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

学习Spring Boot:(二十)使用 MongoDB

2021-11-18 21:04:35  阅读:174  来源: 互联网

标签:pet Spring void Boot class Pet MongoDB id public


前言

MongoDB(来自于英文单词“Humongous”,中文含义为“庞大” )是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。

正文

Spring Boot 对 MongoDB 的数据源操作进行了封装。

加入依赖

在 pom.xml 加入:

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

配置连接参数

在系统配置文件中配置:

spring:
  data:
    mongodb:
      uri: mongodb://wuwii:123456@localhost:27017/learn

测试使用

  1. 创建实体
@Data
@Document(collection = "pet") // 标识要持久化到MongoDB的域对象。模型名是 pet
public class Pet implements Serializable {
    @Id
    //@Indexed(unique = true) // 使用MongoDB的索引特性标记一个字段
    private Long id;
    @Field("pet_name") //自定义设置对应MongoDB中的key
    private String name;
    private String species;
}
  1. 创建 dao 接口完成基础操作
@Repository
public class PetDaoImpl implements PetDao {
    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public Pet find(Long id) {
        return mongoTemplate.findById(id, Pet.class);
    }

    @Override
    public List<Pet> findAll() {
        return mongoTemplate.findAll(Pet.class);
    }

    @Override
    public void add(Pet pet) {
        mongoTemplate.insert(pet);
    }

    @Override
    public void update(Pet pet) {
        Query query = new Query();
        Criteria criteria = new Criteria("id");
        criteria.is(pet.getId());
        query.addCriteria(criteria);
        Update update = new Update();
        update.set("pet_name", pet.getName())
                .set("species", pet.getSpecies());
        mongoTemplate.updateFirst(query, update, Pet.class); // 条件,更新的数据,更新的类型
    }

    @Override
    public void delete(Long id) {
        Criteria criteria = new Criteria("id");
        criteria.is(id);
        Query query = new Query();
        query.addCriteria(criteria);
        mongoTemplate.remove(query, Pet.class); // 删除的条件、删除的类型
    }
}
  1. 简单测试下
@SpringBootTest
@RunWith(SpringRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class PetDaoTest {

    @Autowired
    private PetDao petDao;

    private Pet pet;

    @Before
    public void before() {
        pet = new Pet();
        pet.setId(1L);
        pet.setName("Tom");
        pet.setSpecies("cat");
    }

    @After
    public void after() {
    }

    @Test
    public void test01Add() {
        Pet pet = new Pet();
        pet.setId(1L);
        pet.setName("Tom");
        pet.setSpecies("cat");
        petDao.add(pet);
    }

    @Test
    public void test02Find() {
        Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));
    }

    @Test
    public void test03FindAll() {
        System.out.println(petDao.findAll());
    }

    @Test
    public void test04Update() {
        pet.setName("KronChan");
        petDao.update(pet);
        Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));
    }

    @Test
    public void test05Delete() {
        petDao.delete(pet.getId());
        Assert.assertThat(null, Matchers.equalTo(petDao.find(pet.getId())));
    }

}

去数据库验证结果

> use learn
switched to db learn
> db.pet.find()
{ "_id" : NumberLong(1), "_class" : "com.wuwii.testmongodb.Pet", "pet_name" : "KronChan", "species" : "cat" }

多数据源的使用

未完成


标签:pet,Spring,void,Boot,class,Pet,MongoDB,id,public
来源: https://blog.csdn.net/qq_43842093/article/details/121390062

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有