文档数据库——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规定的操作要灵活得多。