专业生产车间设计图纸网站,怎么用群晖做网站,百度seo推广怎么收费,国外文本排版设计网站前段时间分享了关于Spring Boot中使用Redis的文章#xff0c;除了Redis之后#xff0c;我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。
下面就来简单介绍一下MongoDB#xff0c;并且通过一个例子来介绍Spring Boot中对MongoDB访问的配置和使用。
Mong…前段时间分享了关于Spring Boot中使用Redis的文章除了Redis之后我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。
下面就来简单介绍一下MongoDB并且通过一个例子来介绍Spring Boot中对MongoDB访问的配置和使用。
MongoDB简介
MongoDB是一个基于分布式文件存储的数据库它是一个介于关系数据库和非关系数据库之间的产品其主要目标是在键/值存储方式提供了高性能和高度伸缩性和传统的RDBMS系统具有丰富的功能之间架起一座桥梁它集两者的优势于一身。
MongoDB支持的数据结构非常松散是类似json的bson格式因此可以存储比较复杂的数据类型也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。
既然称为NoSQL数据库Mongo的查询语言非常强大其语法有点类似于面向对象的查询语言几乎可以实现类似关系数据库单表查询的绝大部分功能而且还支持对数据建立索引。
但是MongoDB也不是万能的同MySQL等关系型数据库相比它们在针对不同的数据类型和事务要求上都存在自己独特的优势。在数据存储的选择中坚持多样化原则选择更好更经济的方式而不是自上而下的统一化。
较常见的我们可以直接用MongoDB来存储键值对类型的数据如验证码、Session等由于MongoDB的横向扩展能力也可以用来存储数据规模会在未来变的非常巨大的数据如日志、评论等由于MongoDB存储数据的弱类型也可以用来存储一些多变json数据如与外系统交互时经常变化的JSON报文。而对于一些对数据有复杂的高事务性要求的操作如账户交易等就不适合使用MongoDB来存储。
MongoDB官网
访问MongoDB
在Spring Boot中对如此受欢迎的MongoDB同样提供了自配置功能。
引入依赖
Spring Boot中可以通过在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb的访问支持依赖。它的实现依赖spring-data-mongodb。是的您没有看错又是spring-data的子项目之前介绍过spring-data-jpa、spring-data-redis对于mongodb的访问spring-data也提供了强大的支持下面就开始动手试试吧。
dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-mongodb/artifactId/dependency快速开始使用Spring-data-mongodb
若MongoDB的安装配置采用默认端口那么在自动配置的情况下我们不需要做任何参数配置就能马上连接上本地的MongoDB。下面直接使用spring-data-mongodb来尝试对mongodb的存取操作。记得mongod启动您的mongodb
创建要存储的User实体包含属性id、username、age
public class User { Id private Long id; private String username; private Integer age; public User(Long id, String username, Integer age) { this.id id; this.username username; this.age age; } // 省略getter和setter}实现User的数据访问对象UserRepository
public interface UserRepository extends MongoRepositoryUser, Long { User findByUsername(String username);}在单元测试中调用
RunWith(SpringJUnit4ClassRunner.class)SpringApplicationConfiguration(Application.class)public class ApplicationTests { Autowired private UserRepository userRepository; Before public void setUp() { userRepository.deleteAll(); } Test public void test() throws Exception { // 创建三个User并验证User总数 userRepository.save(new User(1L, didi, 30)); userRepository.save(new User(2L, mama, 40)); userRepository.save(new User(3L, kaka, 50)); Assert.assertEquals(3, userRepository.findAll().size()); // 删除一个User再验证User总数 User u userRepository.findOne(1L); userRepository.delete(u); Assert.assertEquals(2, userRepository.findAll().size()); // 删除一个User再验证User总数 u userRepository.findByUsername(mama); userRepository.delete(u); Assert.assertEquals(1, userRepository.findAll().size()); }}参数配置
通过上面的例子我们可以轻而易举的对MongoDB进行访问但是实战中应用服务器与MongoDB通常不会部署于同一台设备之上这样就无法使用自动化的本地配置来进行使用。这个时候我们也可以方便的配置来完成支持只需要在application.properties中加入mongodb服务端的相关配置具体示例如下
spring.data.mongodb.urimongodb://name:passlocalhost:27017/test在尝试此配置时记得在mongo中对test库创建具备读写权限的用户用户名为name密码为pass不同版本的用户创建语句不同注意查看文档做好准备工作
若使用mongodb 2.x也可以通过如下参数配置该方式不支持mongodb 3.x。
spring.data.mongodb.hostlocalhost spring.data.mongodb.port27017代码示例
本文的相关例子可以查看下面仓库中的chapter3-2-6目录
Githubhttps://github.com/dyc87112/SpringBoot-LearningGiteehttps://gitee.com/didispace/SpringBoot-Learning
如果您觉得本文不错欢迎Star支持您的关注是我坚持的动力