专栏首页NetkillerSpring data MongoDB 之 MongoRepository
原创

Spring data MongoDB 之 MongoRepository

Netkiller Spring Cloud 手札

Spring Cloud Cookbook

Mr. Neo Chan, 陈景峯(BG7NYT)

中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com>

$Id: book.xml 606 2013-05-29 09:52:58Z netkiller $

版权 © 2015-2018 Neo Chan

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cn

http://netkiller.github.io

http://netkiller.sourceforge.net

我的系列文档

编程语言

Netkiller Architect 手札

Netkiller Developer 手札

Netkiller Java 手札

Netkiller Spring 手札

Netkiller PHP 手札

Netkiller Python 手札

Netkiller Testing 手札

Netkiller Cryptography 手札

Netkiller Perl 手札

Netkiller Docbook 手札

Netkiller Project 手札

Netkiller Database 手札

5.2.3. MongoRepository

5.2.3.1. 扫描仓库接口

默认不需要设置,除非你的包不在当前包下,或者命令不是 repository。

@EnableMongoRepositories(basePackages = "cn.netkiller.repository")		

5.2.3.2. findAll()

	@RequestMapping(value = "read", method = RequestMethod.GET, produces = { "application/xml", "application/json" })
	@ResponseStatus(HttpStatus.OK)
	public List<Withdraw> read() {
		return repository.findAll();
	}

5.2.3.3. deleteAll()

repository.deleteAll();

5.2.3.4. save()

repository.save(new City("Shenzhen", "China"));

5.2.3.5. count()

	@RequestMapping("count")
	public long count() {
		return repository.count();
	}

5.2.3.6. exists() 判断是否存在

boolean isExists = userRepository.exists(user.getId());			

5.2.3.7. existsById()

memberRepository.existsById(id);			

5.2.3.8. findByXXXX

List<User> findByName(String name);

List<User> users = userRepository.findByName("Eric");

5.2.3.9. findAll with Sort

List<User> users = userRepository.findAll(new Sort(Sort.Direction.ASC, "name"));			

5.2.3.10. FindAll with Pageable

Pageable pageable = PageRequest.of(0, 1);
Page<User> page = userRepository.findAll(pageable);
List<User> users = pages.getContent();	
5.2.3.10.1. PageRequest - springboot 1.x 旧版本
Page<User> findByLastname(String lastname, Pageable pageable);			
	@RequestMapping(value = "read/{size}/{page}", method = RequestMethod.GET, produces = { "application/xml", "application/json" })
	@ResponseStatus(HttpStatus.OK)
	public List<Withdraw> readPage(@PathVariable int size, @PathVariable int page){
		PageRequest pageRequest = new PageRequest(page-1,size);
		return repository.findAll(pageRequest).getContent();
	}

URL翻页参数,每次返回10条记录

					第一页 http://localhost:8080/v1/withdraw/read/10/1.json
					第二页 http://localhost:8080/v1/withdraw/read/10/2.json
					...
					第五页 http://localhost:8080/v1/withdraw/read/10/5.json

5.2.3.11. StartingWith 和 EndingWith

List<User> findByNameStartingWith(String regexp);
List<User> findByNameEndingWith(String regexp);

List<User> users = userRepository.findByNameStartingWith("N");
List<User> users = userRepository.findByNameEndingWith("o");

5.2.3.12. Between

List<User> findByAgeBetween(int ageGT, int ageLT);

List<User> users = userRepository.findByAgeBetween(20, 50);

5.2.3.13. @Query

public interface PersonRepository extends MongoRepository<Person, String> {
	@Query("{ 'name' : ?0 }")
	List<Person> findWithQuery(String userId);
}

	@Query(value = "{'statusHistories':{$elemMatch:{'status':{$in:['PROCESSABLE']}}},'created' : { '$gt' : { '$date' : ':?0' } , '$lt' : { '$date' : ':?1'}}}", count = true)
	Long countMe(@Param("dateFrom") Date datefrom, @Param("dateTo") Date dateTo);

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android VideoView 视频播放完成例子(进度条,播放时间,暂停,拖动)

    中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com>

    netkiller
  • 一步步实施 DevOps (五)

    本章节重点谈自动化部署,每个人对自动化部署都有自己的理解,每个企业对自动化部署的需求也不同。

    netkiller
  • 一步步实施 DevOps (五)

    本章节重点谈自动化部署,每个人对自动化部署都有自己的理解,每个企业对自动化部署的需求也不同。

    netkiller
  • 因果图在运维工作中的应用

    因果图在运维工作中的应用 摘要 我的系列文档 Netkiller Architect 手札 Netkiller Developer 手札 Netkill...

    netkiller old
  • DNS域名解析服务及其配置

    到 20 世纪 70 年代末,ARPAnet 是一个拥有几百台主机的很小很友好的网络。仅需要一个名为 HOSTS.TXT 的文件就能容纳所有需要了解的主机信息:...

    宜信技术学院
  • Andrew Ng机器学习课程笔记(二)之逻辑回归

    http://www.cnblogs.com/fydeblog/p/7364636.html

    努力努力再努力F
  • 【JS】394- 简明 JavaScript 函数式编程-入门篇

    本文较长,总共分为三大部分:(对于函数式编程以及其优点有一定理解的童鞋,可以直接从 第二部分 开始阅读)

    pingan8787
  • 技术雷达第十九期正式发布——用百余个条目更新你的技能图谱!

    ThoughtWorks每年都会出品两期技术雷达,这是一份关于技术趋势的报告,由ThoughtWorks 技术战略委员会(TAB)经由多番正式讨论给出,它以独特...

    ThoughtWorks
  • 一个病毒样本分析的全过程

    SHA1: 3f738735bb0c5c95792c21d618eca8c0d5624717

    信安之路
  • Jtro的技术分享:关于Htc_vive开发中的问题解决方案——手柄拿起物体不使用后再自动归位

    这个问题是挺常见的,我当时开发产品被测试的时候。场景中的某个物体由于种种原因拿起之后会掉下来,接着又有地面不对齐等一系列问题,所以我就想着把这个问题解决了。

    LittleU

扫码关注云+社区

领取腾讯云代金券