mongodb和spring整合使用

整合前看项目中spring版本,选择对应的mongodb依赖

spring-data-mongodb版本:1.10.8.RELEASE

spring版本:4.3.12.RELEASE

spring-data-mongodb版本:1.10.8.RELEASE

mongo-java-driver版本:2.14.3

 

配置如下:

<mongo:repositories base-package="xxx.xxx.repository" />
<!-- MongoDB host -->
<mongo:mongo host="localhost/ip" port="27017"/>
	
<!-- Template for performing MongoDB operations -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"
	  c:mongo-ref="mongo" c:databaseName="dbName"/>

包路径xxx.xxx.repository是继承MongoRepository接口的接口路径,不需要写实现,程序运行会自动生成代理对象,这个被代理对象类型就是SimpleMongoRepository

public interface MongoService extends MongoRepository<DB对象, 主键类型> {

}

 

MongoRepository

MongoRepository中默认方法可以直接使用,恶心的条件查询的时候没有时间范围的查询设置

TrackRecord trackRecord = new TrackRecord();
// 这里设置的属性都会当成“等于”的条件
trackRecord.setUserId(userId); 
trackRecord.setCreateTime(DateUtils.parseDate(LocalDate.now()));

list = mongoService.findAll(Example.of(trackRecord,                     
    ExampleMatcher.matching().withIgnoreNullValues()
    //.withMatcher("createTime", ExampleMatcher.GenericPropertyMatchers.regex())
    .withIgnorePaths("_id","_class")),
    new Sort(new Sort.Order(Sort.Direction.DESC, "createTime")));

为此查询了源码,它的实现是SimpleMongoRepository,这个类中有两个属性:

private final MongoOperations mongoOperations;
private final MongoEntityInformation<T, ID> entityInformation;

 MongoOperations也是一个接口,它的实现就MongoTemplate,看到这感觉MongoRepository是MongoTemplate的一个包装,应该更方便强大一点,但是

它的查询方法只有一个Query对象参数的,还是一个私有的,不能直接调用,其它的分页和迭代不适合我用,参数只有Example,它有下面两个参数

private final @NonNull T probe;
private final @NonNull ExampleMatcher matcher;

T 参数就是DB定义对象,设置什么属性查询的适合就会加什么条件,时间是大于小于的范围,这就毙掉了不能用

ExampleMatcher参数是设置怎么使用使用那些属性,可以忽略空值,模糊查询(以什么开头和结尾)

mongoTemplate

但是mongoTemplate可以:

Query query = new Query();
query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "createTime")));

Criteria criteria = new Criteria();
criteria.and("userId").is(userId);			 
criteria.and("createTime").gte(DateUtils.parseDate(LocalDate.now())).lte(DateUtils.parseDate(LocalDate.now().plusDays(1)));
query.addCriteria(criteria);
list = mongoTemplate.find(query, TrackRecord.class);

 

spring-data-mongodb版本:3.2.0

spring-data-mongodb版本比较新的时候配置就不一样了,从哪个版本开始更新的我没找

spring-data-mongodb版本:3.2.0

 这个版本的配置

	<mongo:mongo-client id="mongoClient" host="localhost" port="27017">
		<!--<mongo:client-settings read-concern="" write-concern=""/>-->
	</mongo:mongo-client>
	
	<mongo:db-factory id="mongoDbFactory" dbname="track" mongo-client-ref="mongoClient"/>
	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate" >
		<constructor-arg ref="mongoDbFactory" />
	</bean>

client-settings里可配置一些优化属性

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值