基于 mongodb-driver 的一些封装和增强,提供 orm 常用的数据库操作方法:
3. 避免不同 entity 版本的 save 方法导致数据覆盖问题等。
5. 提供 EntityInterceptor 接口,针对 find、insert、update、delete 等操作的预处理能力
7. 提供同步操作和异步(reactive)操作方法。
<dependencies >
<!-- raven-mongodb start -->
<dependency >
<groupId >io.github.raven-source</groupId >
<artifactId >raven-mongodb-spring-boot-starter</artifactId >
<version >3.2.1</version >
</dependency >
<!-- mongodb end -->
</dependencies >
mongodb.options.connString=mongodb://127.0.0.1:27017/?
mongodb.options.dbName=TestDB
3. 例如 SpringBoot 项目可以自定义个 Configuration 、实体对象、以及对应的 UserRepository :
@ FieldNameConstants
@ Getter
@ Setter
public class Orders implements AutoIncr <Long > {
@ BsonId
private Long id ;
private Long uid ;
private Long itemsId ;
private String name ;
private Boolean isPay = Boolean .FALSE ;
private BigDecimal price ;
private Status status ;
}
@ Repository
public interface OrdersRepository extends MongoRepository <Orders , Long > {
}
@ SpringBootApplication
@ EnableMongoRepositories (basePackages = "org.demo.repository" )
@ EnableConfigurationProperties
public class Application {
public static void main (String [] args ) {
SpringApplication springApplication = new SpringApplication (Application .class );
springApplication .run (args );
}
}
Orders orders ;
// 根据id查询
orders = ordersRepository .findOne (1L );
// 根据条件查询
orders = ordersRepository .findOne (
// FilterBuilder<Orders>
f -> f
.eq (Fields .status , Status .Normal )
.gt (Fields .price , 9.0 )
);