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 读写分离的使用