天天看点

《深入实践Spring Boot》一2.3 使用MongoDBMongoDB

在当前流行的nosql数据库中,mongodb是大家接触比较早而且用得比较多的数据库。mongodb是文档型的nosql数据库,具有大数据量、高并发等优势,但缺点是不能建立实体关系,而且也没有事务管理机制。

在spring boot中使用mongodb也像使用jpa一样容易,并且同样拥有功能完善的资源库。同样的,要使用mongodb,首先必须在工程的maven中引入它的依赖,如代码清单2-14所示。除了mongodb本身的依赖之外,还需要一些附加的工具配套使用。

代码清单2-14 使用mongodb的maven依赖配置

mongodb是文档型数据库,使用mongodb也可以像使用关系型数据库那样为文档建模。如代码清单2-15所示,为用户文档建模,它具有用户名、密码、用户名称、邮箱和注册日期等字段,有一个用来保存用户角色的数据集,还定义了一个构造函数,可以很方便地用来创建一个用户实例。

代码清单2-15 用户文档建模

mongodb也有像使用jpa那样的资源库,如代码清单2-16所示,为用户文档创建了一个repository接口,继承于mongorepository,实现了文档持久化。

代码清单2-16 用户文档持久化

public interface userrepository extends mongorepository {

}

3

《深入实践Spring Boot》一2.3 使用MongoDBMongoDB

mongorepository的继承关系如图2-4所示,看起来跟jpa的资源库的继承关系没有什么两样,它也包含访问数据库的丰富功能。

代码清单2-17是用在测试中的使用mongodb的一个配置类定义,其中@propertysource指定读取数据库配置文件的位置和名称,@enablemongorepositories启用资源库并设定定义资源库接口放置的位置,这里使用环境变量environment来读取配置文件的一些数据库配置参数,然后使用一个数据库客户端,连接mongodb服务器。

代码清单2-17 testdatasourceconfig配置类

如果还没有安装mongodb服务器,可以参照附录b的方法安装并启动一个mongodb服务器。然后,使用如代码清单2-18所示的配置方法配置连接服务器的一些参数,该配置假定你的mongodb服务器安装在本地,并使用默认的数据库端口:27017。

代码清单2-18 mongodb数据库配置

mongo.host=localhost

mongo.name=test

mongo.port=27017

这样就可以编写一个juint测试例子来测试userrepository接口的使用情况,如代码清单2-19所示。测试例子首先使用用户文档类创建一个用户对象实例,然后使用资源库接口调用save方法将用户对象保存到数据库中,最后使用f?indall方法查询所有用户的列表,并使用一个循环输出用户的简要信息。

代码清单2-19 mongodb测试

roles);

现在可以在idea的run/debug conf?iguration配置中增加一个juint测试项目,模块选择mongodb,工作目录选择模块所在的工程根目录,类选择上面编写的测试例子,即dbdemo.mongo.test.repositorytests,并将配置保存为mongotest。

使用debug方式运行测试项目mongotest。如果通过测试,将输出查到的用户的简要信息,如下所示:

dbdemo.mongo.test.repositorytests - ===user=== userid:1, username:name, pass:12345678, registrationdate:tue jun 07 14:26:02 cst 2016

这时使用mongodb数据库客户端输入下面的查询指令,也可以查到这条文档的详细信息,这是一条json结构的文本信息。