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
属性完成自定义的MongoDB
的MongoRepository
实现类的扫描
/**
* 客户数据接口注入
*/
@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后访问的路径前缀。