NoSQL实现(2)——MongoDB

660 阅读2分钟

文档数据库——MongoDB

与关系型数据库不同,文档数据库中各文档的“数据模式”也许不同,但是它还是能够被放在同一个集合当中。

首先为项目添加依赖,并进行MongoDB的连接配置
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.username= test
spring.data.mongodb.password=123456
spring.data,mongodb.database = test

spring boot 提供了两种用于管理mongodb的方法,一种是使用MongoRepository,另一种是通过MongoTemplate来进行管理。下面分别介绍这两种方法:

  • MongoRepository

MongoRepository 是spring-data 里面针对MongoDB整合提供的一个简化与数据库交互,在使用时直接继承,如果需要增加自己的方法,也可以直接在子类里面书写就可以。

public interface UserRepository extends MongoRepository<User,Integer> {
    @Override
    List<User> findAll();
    User findById(int id);
}

然后在使用的时候,直接自动装配好之后使用MongoRepository类里自带的一些操作就可以了。如下例,可以直接完成插入数据的操作。

@Autowired
UserRepository repository;

public void add(User user){
    repository.insert(user);
    System.out.println("插入成功");
}


  • MongoTemplate

使用MongoRepository操作简单但是不够灵活,并且它只提供了最基本的增删改查,对于一些复杂的操作就不那么适用了。于是spring boot提供了另一种支持更多操作的方法:MongoTemplate,MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面。

使用之前先进行配置:

@Configuration
public class MongConfig {
    @Value("${spring.data.mongodb.host}")
    String mongoHost;
    @Value("${spring.data.mongodb.port}")
    int mongoPort;
    @Value("${spring.data,mongodb.database}")
    String dbName;

    @Bean
    public MongoClient mongoClient() throws Exception{
        MongoClient client = new MongoClient(mongoHost, mongoPort);
        return client;
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception{
        return new MongoTemplate(mongoClient(),dbName);
    }
}

然后编写Dao层规定操作,接着在UserDao的实现中注入MongoTemplate,通过它自带的一些操作来管理数据库。

@Autowired
MongoTemplate template;

@Override
public void add(User user) {
    template.insert(user);
    System.out.println("success");
}

@Override
public void findUserById(Integer id) {
    System.out.println(template.findById(id,User.class));
}
@Override
public void remove(int id) {
    template.remove(new Query(Criteria.where("id").is(id)),User.class);
    System.out.println("success");
}

其中查询语句是通过构造函数Query (Criteria criteria)来实现的。

Criteria是标准查询的接口,他可以用where将多个条件组合起来进行查询,这样的查询操作就比使用MongoRepository规定的操作要灵活得多。