springboot系列14:单数据源MongoDB

MongoDB 简介

        MongoDB 是最早热门非关系数据库的之一,高性能,开源,无模式的文档型数据库,使用也比较普遍,一般会用做离线数据分析来使用。

        MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。一条记录就是一个文档,是一个数据结构,由字段和值对组成。MongoDB 文档与 JSON 对象类似。字段的值有可能包括其它文档、数组以及文档数组。

        传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB 是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB 对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

 

MongoDB 的增删改查

 

1、pom 配置

    <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-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

2、在 application.properties 配置

spring.data.mongodb.uri=mongodb://localhost:28018/test

 

3、创建用户实体

public class User implements Serializable {
    private Long id;
    private String userName;
    private String passWord;
    //get set
}

 

4、创建实体的增删改查操作

package top.zlcxy.mongodb.repository.impl;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Component;
import top.zlcxy.mongodb.domain.User;
import top.zlcxy.mongodb.repository.UserRepository;

@Component
public class UserRepositoryImpl implements UserRepository {

    @Autowired
    private MongoTemplate mongoTemplate;


    @Override
    public long saveUser(User user) {
        return mongoTemplate.save(user) != null ? 1 : 0;
    }


    @Override
    public User findUserByUserName(String userName) {
        Query query = new Query(Criteria.where("userName").is(userName));
        User user = mongoTemplate.findOne(query, User.class);
        return user;
    }


    @Override
    public long updateUser(User user) {
        Query query = new Query(Criteria.where("id").is(user.getId()));
        Update update = new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
        //更新查询返回结果集的第一条
        UpdateResult result = mongoTemplate.updateFirst(query, update, User.class);
        return result != null ? result.getMatchedCount() : 0;

    }


    @Override
    public long deleteUserById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        DeleteResult result = mongoTemplate.remove(query, User.class);
        return result != null ? result.getDeletedCount() : 0;
    }
}

 

4、测试方法

package top.zlcxy.mongodb;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import top.zlcxy.mongodb.domain.User;
import top.zlcxy.mongodb.repository.UserRepository;

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void testSaveUser() throws Exception {
        User user = new User();
        user.setId(3l);
        user.setUserName("小明");
        user.setPassWord("123");
        Assert.assertEquals("新增成功",userRepository.saveUser(user),1L);
    }

    @Test
    public void findUserByUserName() {
        User user = userRepository.findUserByUserName("小明");
        Assert.assertNotNull(user);
    }

    @Test
    public void updateUser() {
        User user = new User();
        user.setId(2l);
        user.setUserName("小红");
        user.setPassWord("456");
        Assert.assertEquals("更新成功",userRepository.updateUser(user),1L);
    }

    @Test
    public void deleteUserById() {
        Assert.assertEquals("删除成功",userRepository.deleteUserById(1l),1L);
    }
}

 

5、测试结果

 

 

 

 

posted @ 2022-01-13 19:36  IT6889  阅读(45)  评论(0编辑  收藏  举报