这里有新鲜出炉的 MongoDB 教程, 程序狗速度看过来!
MongoDB 分布式文件存储的数据库
MongoDB 是一个基于分布式文件存储的数据库. 由 C++ 语言编写. 旨在为 web 应用提供可扩展的高性能数据存储解决方案.
MongoDB 是一个高性能, 开源, 无模式的, 基于分布式文件存储的文档型数据库, 由 C++ 语言编写, 其名称来源取自 "humongous", 是一种开源的文档数据库──NoSql 数据库的一种. 这篇文章主要介绍了 Spring Boot 中使用 MongoDB 数据库的方法, 需要的朋友可以参考下
MongoDB 数据库简介简介
MongoDB 是一个高性能, 开源, 无模式的, 基于分布式文件存储的文档型数据库, 由 C++ 语言编写, 其名称来源取自 "humongous", 是一种开源的文档数据库──NoSql 数据库的一种. NoSql, 全称是 Not Only Sql, 指的是非关系型的数据库.
特点
MongoDB 数据库的特点是高性能, 易部署, 易使用, 存储数据非常方便. 主要功能特性有:
* 面向集合存储, 易存储对象类型的数据.
* 模式自由.
* 支持动态查询.
* 支持完全索引, 包含内部对象.
* 支持查询.
* 支持复制和故障恢复.
* 使用高效的二进制数据存储, 包括大型对象(如视频等).
* 自动处理碎片, 以支持云计算层次的扩展性
* 支持 RUBY,PYTHON,JAVA,C++,PHP 等多种语言.
* 文件存储格式为 BSON(一种 JSON 的扩展)
* 可通过网络访问
MongoDB 是一个开源的 NoSQL 文档数据库, 它使用一个 JSON 格式的模式 (schema) 替换了传统的基于表的关系数据. Spring Boot 为使用 MongoDB 提供了很多便利, 包括 spring-boot-starter-data-mongodb 'Starter POM'.
引入 spring-boot-starter-data-mongodb 包, 在 pom.xml 配置文件中增加如下内容(基于之前章节 "Spring Boot 构建框架" 中的 pom.xml 文件):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
注入一个自动配置的 org.springframework.data.mongodb.MongoDbFactory 来访问 Mongo 数据库. 默认情况下, 该实例将尝试使用 URL: mongodb://localhost/test 连接一个 MongoDB 服务器.
import org.springframework.data.mongodb.MongoDbFactory;
import com.mongodb.DB;
@Component
public class MyBean {
private final MongoDbFactory mongo;
@Autowired
public MyBean(MongoDbFactory mongo) {
this.mongo = mongo;
}
// ...
public void example() {
DB db = mongo.getDb();
// ...
}
}
可以通过设置 spring.data.mongodb.uri 来改变该 url, 或指定一个 host/port. 在 application.properties 中设置如下的属性:
spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017
注意: 如果没有指定 spring.data.mongodb.port, 那将使用默认的端口 27017. 可以简单的从上面的示例中删除这一行. 如果不使用 Spring Data Mongo, 可以注入 com.mongodb.Mongo beans 而不是使用 MongoDbFactory. 如果想全面控制 MongoDB 连接的建立, 也可以声明自己的 MongoDbFactory 或 Mongo,@Beans.
MongoDBTemplate
Spring Data Mongo 提供了一个 MongoTemplate 类, 它的设计和 Spring 的 JdbcTemplate 很相似. 正如 JdbcTemplate 一样, Spring Boot 会自动配置一个 bean, 你只需简单的注入它即可:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final MongoTemplate mongoTemplate;
@Autowired
public MyBean(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
// ...
}
应用集成 MongoDB 案例
在 application.properties 配置文件中添加内容如下:
spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test
多个 IP 集群采用以下配置:
spring.data.mongodb.uri=mongodb://user:pass@ip1:port1,ip2:port2/database
创建数据实体类, 具体代码如下:
public class UserInfo implements Serializable {
private Long id;
private String userName;
private String passWord;
//getter,setter 省略
}
创建实体类对应 dao 层, 实现增删改查操作, 具体代码如下:
@Component
public class UserInfoDaoImpl implements UserInfoDao {// UserInfoDao 自定义接口
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建对象
* @param user
*/
@Override
public void saveUser(UserInfo user) {
mongoTemplate.save(user);
}
/**
* 根据用户名查询对象
* @param userName
* @return
*/
@Override
public UserInfo findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
UserInfo user = mongoTemplate.findOne(query , UserInfo.class);
return user;
}
/**
* 更新对象
* @param user
*/
@Override
public void updateUser(UserInfo user) {
Query query=new Query(Criteria.where("id").is(user.getId()));
Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
// 更新查询返回结果集的第一条
mongoTemplate.updateFirst(query,update,UserInfo.class);
// 更新查询返回结果集的所有
// mongoTemplate.updateMulti(query,update,UserInfo.class);
}
/**
* 删除对象
* @param id
*/
@Override
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserInfo.class);
}
}
简单测试方法, 具体代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {
@Autowired
private UserDao userDao;
@Test
public void testSaveUser() throws Exception {
UserInfo user=new UserInfo();
user.setId(2);
user.setUserName("路人甲");
user.setPassWord("123456");
userDao.saveUser(user);
}
@Test
public void findUserByUserName(){
UserInfo user= userDao.findUserByUserName("路人甲");
System.out.println("user is"+user);
}
@Test
public void updateUser(){
UserInfo user=new UserInfo();
user.setId(3);
user.setUserName("路人乙");
user.setPassWord("123456");
userDao.updateUser(user);
}
@Test
public void deleteUserById(){
userDao.deleteUserById(3);
}
}
登录 MongoDB 验证数据
使用 mongovue 工具来连接后直接图形化查看或登录服务器用命令来查看登录 mongodb 服务端, 执行命令 bin/mongo -host localhost -port 27017, 切换至 test 库执行 use test 命令, 查询 userInfo 集合数据, 执行 db.userInfo.find() 查询数据.
总结
以上所述是小编给大家介绍的 Spring Boot 中使用 MongoDB 数据库的方法, 希望对大家有所帮助, 如果大家有任何疑问请给我留言, 小编会及时回复大家的. 在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/18/0129/362645.html