JAVA封装Mongodb操作之一:MongoRepository
来源:互联网 发布:西门子编程暂停指令 编辑:程序博客网 时间:2024/05/16 19:27
MongoRepository与HibernateTemplete相似,提供一些基本的方法,实现的方法有findone(),save(),count(),findAll(),findAll(Pageable),delete(),deleteAll(),基本就这几个,但是:
与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository<T, TD>接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,spring会根据定义的规则自动生成。
例:
1
public
interface
PersonRepository
extends
2
3
MongoRepository<Person, ObjectId>{
4
//这里可以添加额外的查询方法
5
}
例:
1
public
interface
PersonRepository
extends
2
3
MongoRepository<Person, ObjectId>{
4
//查询大于age的数据
5
public
Page<Product> findByAgeGreaterThan(
int
age,Pageable page) ;
6
}
GreaterThan(大于)
findByAgeGreaterThan(int age)
{"age" : {"$gt" : age}}
LessThan(小于)
findByAgeLessThan(int age)
{"age" : {"$lt" : age}}
Between(在...之间)
findByAgeBetween(int from, int to)
{"age" : {"$gt" : from, "$lt" : to}}
IsNotNull, NotNull(是否非空)
findByFirstnameNotNull()
{"age" : {"$ne" : null}}
IsNull, Null(是否为空)
findByFirstnameNull()
{"age" : null}
Like(模糊查询)
findByFirstnameLike(String name)
{"age" : age} ( age as regex)
(No keyword) findByFirstname(String name)
{"age" : name}
Not(不包含)
findByFirstnameNot(String name)
{"age" : {"$ne" : name}}
Near(查询地理位置相近的)
findByLocationNear(Point point)
{"location" : {"$near" : [x,y]}}
Within(在地理位置范围内的)
findByLocationWithin(Circle circle)
{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}
Within(在地理位置范围内的)
findByLocationWithin(Box box)
{"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}
尽管以上查询功能已经很丰富,但如果还不能满足使用情况的话可以用一下方法---基于mongodb原本查询语句的查询方式。
例:在原接口中加入
1
@Query
(
"{ 'name':{'$regex':?2,'$options':'i'}, sales': {'$gte':?1,'$lte':?2}}"
)
2
public
Page<Product> findByNameAndAgeRange(String name,
double
ageFrom,
double
ageTo,Pageable page);
注释Query里面的就是mongodb原来的查询语法,我们可以定义传进来的查询参数,通过坐标定义方法的参数。
还可以在后面指定要返回的数据字段,如上面的例子修改如下,则只通过person表里面的name和age字段构建person对象。
1
@Query
(value=
"{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}"
,fields=
"{ 'name' : 1, 'age' : 1}"
)
2
public
Page<Product> findByNameAndAgeRange(String name,
double
ageFrom,
double
ageTo,Pageable page);
- JAVA封装Mongodb操作之一:MongoRepository
- Java操作MongoDB采用MongoRepository仓库进行条件查询
- Java操作MongoDB采用MongoRepository仓库进行条件查询
- mongodb系列之一:java操作mongodb数据库
- MongoDB FAQ MongoRepository
- MongoDb 分页 SpringDataPageable MongoRepository
- MongoDb 分页 SpringDataPageable MongoRepository
- JAVA封装Mongodb操作之二:MongoOperations
- 总结MongoDB采用MongoRepository进行查询
- springboot集成mongodb使用mongoTemplate和MongoRepository
- [mongodb]java操作mongodb
- [mongodb]java操作mongodb
- Java的特征之一 封装
- mongodb学习(java操作mongodb)
- mongodb初学-java操作mongodb
- spring MongoDB 集成crud操作(简单封装)
- spring MongoDB 集成crud操作(简单封装)
- nodejs mongoose 操作mongodb 数据库封装
- java.net.SocketException: Too many open files 问题的解决办法
- C#中如何创建xml文件 增、删、改、查 xml节点信息
- LightSwitch 社区&内容汇总 – 2012年9月
- oracle基本数据类型
- force 指令
- JAVA封装Mongodb操作之一:MongoRepository
- RAC在OCR磁盘故障且无备份时快速恢复的方法
- 关于NSRunloop的个人理解
- 应用程序设置统一背景的实现方法
- 最高法院对灵武死刑案进行远程视频提讯复核-死刑复核-杀人案
- UNExcepted inconsistency; run fsck manually
- 送给正在奋斗的人
- UE技巧
- RAID详解[RAID0/RAID1/RAID10/RAID5]