spring boot mongodb

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

2.传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,MongoDB的适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。对事物支持较弱,不适用复杂的多文档(多表)的级联查询

3.使用spring boot 的Pom.xml中添加 spring-boot-starter-data-mongodb 包引用

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

在application.properties中配置连接信息

spring.data.mongodb.host=192.168.0.100
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=admin
spring.data.mongodb.password=admin

创建一个实体 User

public class User {

    private Long mid;
    private String userName;
    private String passWord;

    //Getter Setter....
}

为了文章篇幅过短,就直接列出 UserDaoImpl 的实现,一个典型的增删改查就完成了,在 ApplicationTests 类中进行测试,
ConstantKey.MongoColName.User = “User”; 是集合名


@Component
public class UserDaoImpl implements UserDao {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public void saveUser(User user) {
        mongoTemplate.save(user, ConstantKey.MongoColName.User);
    }

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

    @Override
    public void updateUser(User user) {
        Query query = new Query(Criteria.where("mid").is(user.getMid()));
        Update update = new Update().set("userName",user.getUserName()).set("passWord",user.getPassWord());
        mongoTemplate.updateFirst(query,update,ConstantKey.MongoColName.User);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
    }

    @Override
    public void deleteUserById(Long id) {
        Query query = new Query(Criteria.where("mid").is(id));
        mongoTemplate.remove(query,ConstantKey.MongoColName.User);
    }
}

测试,直接运行测试方法:

@Test
    public void saveUser(){
        User user = new User(1L,"zhuyu","123456");
        userService.saveUser(user);
    }

    @Test
    public void findUserbyUserName(){
        User user = userService.findUserByUserName("zhuyu");
        System.out.println("user is :"+ user.toString() );
    }

    @Test
    public void updateUser(){
        User user = new User(1L,"zhuyu1","1234567");
        userService.updateUser(user);
    }

    @Test
    public void deleteUser(){
        userService.deleteUserById(1L);
    }

测试结果:
这里写图片描述
搞定,但往往单机是有局限的,mongodb还可以 读写分离-Replica-Set数据分片-Shard(分片也要读写分离)
下一篇讲解 Spring Boot 读写分离的使用

猜你喜欢

转载自blog.csdn.net/zhuyu19911016520/article/details/79996310