spring-boot-starter-data-mongodb确实采用了跟spring-boot-starter-data-jpa同样的方式来完成接口代理类的生成,并且提供了一些常用的单个对象操作的公共方法,MongoRepository接口作用与JPARepository一致,继承了该接口的业务数据接口就可以提供一个被Spring IOC托管的代理实现类,这样我们在注入业务数据接口时就会完成代理实现类的注入。

引入依赖

<!--mongodb依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!--lombok依赖-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<!--fastjson依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.44</version>
</dependency>
<!--测试依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

Repository

public interface CustomerRepository extends MongoRepository<Customer, String> {
}

MongoRepository <T,PK>同样也是采用了两个泛型参数, T:实体类类型。 PK:T实体类内的主键类型,如:String

Model

@Data
public class Customer implements Serializable {
    /**
     * 客户编号
     */
    @Id
    public String id;
    /**
     * 客户名称
     */
    public String firstName;
    /**
     * 客户姓氏
     */
    public String lastName;

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

Configuration

spring:
  application:
    name: spring-boot-mongodb
  data:
    mongodb:
      uri: mongodb://localhost/test
      username: test
      password: 123456

Test

可以通过@EnableMongoRepositories注解配置basePackages属性完成自定义的MongoDBMongoRepository实现类的扫描

/**
 * 客户数据接口注入
 */
@Autowired
private CustomerRepository repository;

@Override
public void run(String... args) {
    // 删除全部
    repository.deleteAll();
    // 添加一条数据
    repository.save(new Customer("于", "起宇"));
    // 查询全部
    logger.info(JSON.toJSONString(repository.findAll()));
}

使用Rest访问MongoDB数据

使用Spring Data Rest自动映射读取MongoDB内的数据,省去一系列繁琐的操作步骤。

引入依赖

<!--data rest依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

改造Repository

@RepositoryRestResource(collectionResourceRel = "customer", path = "customer")
public interface CustomerRepository extends MongoRepository<Customer, String> {
//....省略
}

collectionResourceRel:该参数配置映射MongoDB内的Collection名称。
path:该参数配置映射完成rest后访问的路径前缀。

Copyright © wswzms.top 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-04-17 17:03:57

results matching ""

    No results matching ""