SpringBoot中集成MongoDB

来源:互联网 发布:淘宝直播达人怎么申请 编辑:程序博客网 时间:2024/06/14 21:02

之前项目中使用了mysql+mybatis,现在因业务需要,要增加mongo数据库(是增加,也就是两者并存,一本分表使用mysql管理,另一部分使用mongo管理),先将集成过程记录如下。

  • 首先,在pom.xml中集成mongo的starter
        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-mongodb</artifactId>        </dependency>
  • 然后在application.properties中配置下数据库的地址:
spring.data.mongodb.uri=mongodb://用户名:密码@服务器ip/实例名

需要注意的是,此地址是针对mongo 3.x 的,如果是mongo 2.x ,用户名和密码是要分开写的,具体方法请参考springboot文档。

  • 最后,在代码中就可以引用到mongotemplate这个对象了,如下:
    @Autowired    protected MongoTemplate mongoTemplate;

此时就可以使用mongoTemplate对象对数据库进行各种操作了。


如果你不满足于此,可以继续向下看。

在mybatis中,我们可以以接口的形式声明各种mapper,mapper中的方法既可以映射到xml文件中来完成数据库的操作,也可以直接在其上使用@Select等注解来将sql语句直接编写到代码中。而在spring-data中,我们也可以以接口的进行类似的操作,那么我们在操作Mongo数据库时,能否也使用类似的方法呢?答案是肯定的。
(注意:此方法和上文叙述的方法并不冲突,也就是说可以同时使用这两种方法来访问mongo)

我们只要编写接口,然后继承MongoRepository接口即可,如下:

import org.springframework.data.mongodb.repository.Query;public interface MongoDaoTest extends MongoRepository<Settings, Long> {    List<Settings> findByName();    @Query("{id:0}")    List<Settings> findById(Long id);}

MongoRepository是继承自CrudRepository接口的,因此对表的基本的crud等操作的方法都已经包含了,我们只需要添加一些我们业务上需要的方法即可。
此接口中我自定义了两个方法,第一个是典型的findByXxxx的方法,springboot会根据方法名自动为我们生成查询语句,第二个方法我使用了org.springframework.data.mongodb.repository.Query这个注解,其中传入了json格式的参数(操作mongo数据库时,注解中只能使用json格式的进行查询,而且这个格式好像限制挺多的,比如类似group等操作我就没找到抒写的方法)。
使用此方法就能实现类似于mybatis的操作数据的方式。


全文完

原创粉丝点击