Spring-mongodb

Spring Boot中访问数据库


1.JdbcTemplate,是Spring在JDBC的基础上做了一些封装,面向SQL的访问数据库方式。
2.使用Spring-data-jpa在JPA提供的简单语义上做了一定的封装,整合orm框架访问数据库,默认采用Hibernate实现。Spring Data是面向对象的访问数据库方式。
JPA:Java Persistence API,java持久化api。
Repository 抽象了对数据库的操作,提供了以下接口:CrudRepository、PagingAndSortingRepository、JpaRepository。
注解查询:@Query中允许使用JPQL或SQL来给出查询方法。

Spring-data-mongodb

Spring-data对MongoDB进行了很好的支持,包括以下特征:
mongodb在spring中的配置支持注解 @Configuration和xml的方式。
MongoTemplate辅助类扩展了Mongo operations的生产效率,提供了document和pojo类型之间的转换。MongoOperations是MongoTemplate实现的接口,MongoOperations中有很多操作文档的方法。

参考:
http://docs.spring.io/spring-data/data-document/docs/current/reference/html/
Spring-mongodb 查询
http://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/mongo.repositories.html
http://blog.csdn.net/congcong68/article/details/47183209
Spring Data与MongoDB:不协调的设计,及评论
http://www.infoq.com/cn/news/2013/11/spring-data-mongo-mismatch
MONGODB中的分组聚合在JAVA中的用法
http://www.debugrun.com/a/1pcWFsT.html


MongoRepository

如果只需要用简单的CRUD操作,则不需要添加其他的方法,MongoRepository提供的方法足够使用。
MongoRepository接口有两个参数:第一个参数是带有@Document注解的对象类型,第二个参数是带有@Id注解的属性类型。

public interface PersonRepository extends MongoRepository<Person, String>{
}

  • 注解@Document(collection="name1"),标示映射到mongoDB文档上的领域对象
  • 注解@ID,标示某个为ID域
  • 注解@DbRef,标示某个域要引用其他的文档,这个文档有可能位于另外一个数据库中
  • 注解@Field("field1"),为文档域指定自定义的元数据,若不使用@Field注解,域名与Java属性相同
  • 注解@Version,标示某个属性用作版本域


@Query注解指定查询:
使用@Query时,方法名可不按照规则来写,这可能自由缩短条件多的查询方法名。
@Query注解中的内容是一个 JSON 对象,和在 MongoDB 的控制台查询的find()中的内容是一样的,只不过将双引号换成单引号,将需要变量用 [0]、[1] 和 [2] 的形式表示第一、第二和第三个参数。?#{} 是表示里面的内容是个 SpEL (Spring 的表达式语言) 表达式。

import org.bson.types.ObjectId;
public interface PersonRepository extends MongoRepository<Person, ObjectId> {
    //根据实体类中的属性进行模糊查询带分页,同时指定返回的键:
    /*
    value是查询的条件,?0是占位符,对应着方法中参数中的第一个参数,如果对应的是第二个参数则为?1。
    fields指定返回字段,其中id是自动返回的,不用指定。bson中{'name':1}中的1代表true,表示返回此字段。
    */
    @Query(value="{'name':?0}",fields="{'name':1}")
    public Page findByNameLike(String name,Pageable pageable);

    //查询所有id不为空的数据,同时指定返回的键。方法名的定义规则为:find + By + 属性名(首字母大写) + NotNull。
    @Query(value="{'_id':{'$ne':null}}",fields="{'name':1}")
    public Page findByIdNotNull(Pageable pageable);
}


当MongoDB遇上Spring
http://blog.csdn.net/u012150370/article/details/51822776
A Guide to Queries in Spring Data MongoDB
http://www.baeldung.com/queries-in-spring-data-mongodb


distinct

mongoTemplate.getCollection("collection_name").distinct("field", new BasicDBObject("price", new BasicDBObject("$gt", 10)));
Criteria criteria = getCriteria(conditions, "and");
List values = mongoTemplate.getCollection(collectionName).distinct(distinctField, new Query(criteria).getQueryObject());
String jsonSql="{distinct:'terminalRecord', key:'areaId'}";
CommandResult commandResult=mongoTemplate.executeCommand((DBObject) JSON.parse(jsonSql));
DBObject dbObject=BasicDBObjectBuilder.start("distinct",collectionName).add("key",distinctKey).get();
CommandResult commandResult=mongoTemplate.executeCommand(dbObject);
List values=(List)commandResult.get("values");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值