在学习这个的时候。关于Repository的映射。在备注xml的时候出现了错误。

错误有点坑。以后写的时候注意一点,在学习的时候。用的mongo的jar包版本比较低。

然而本机操作的时候,用的是最新版。其xml的配置发生的变化。

关于配置的信息。在配置的时候去官网查一下当前版本的使用方法。

这里记录一下spring-data-mongodb 的使用方法。增删改查。语法使用等。

通过学习这个。发现spring的好处。降低了开发门槛。而且可以提高开发的速度。还是不错的。

在前面几次学习中。都是使用的原生方法进行查询。这次换一种全新的方法。

基本操作就是创建一个自定义Repository的接口。让他继承与CrudRepository。

然后里面有附带的一些增删改查的方法。

这个最大的好处就是我们只用关注业务逻辑和接口的定义即可。

开发的时候,可以直接写接口。然后不用去写实现类,除非有复杂的方法有实现。

当然,这个接口里面的方法不是随便写的。而是有标准与规范的。具体写法,可以去官网查询api文档

当前版本

      <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>

配置文件,版本不同,配置文件不同

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation=
"http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Default bean name is 'mongo' --> <mongo:mongo-client host="localhost" port="27017"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoClient"/>
<constructor-arg name="databaseName" value="chaoba"/>
</bean> <mongo:repositories base-package="SpringMogo.mongo" />
</beans>
    List<Chaoba> findByName(String name);//根据条件查询
List<Chaoba> findByNameAndSex(String name,String sex);//and查询
List<Chaoba> findByNameAndSexAndAge(String name,String sex,String age);//多个and查询
List<Chaoba> findByNameOrSex(String name,String sex);//or查询
List<Chaoba> findByName(String name,Pageable page);//分页查询
List<Chaoba> findByName(String name,Sort sort);//排序查询 List<Chaoba> findTop2ByName(String name);//查询前几条

本次学习代码如下

ChaobaRepository类
package SpringMogo.mongo; import java.util.List; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; @Repository("ChaobaRepository")
public interface ChaobaRepository extends CrudRepository<Chaoba, String> { List<Chaoba> findByName(String name);// 根据条件查询 List<Chaoba> findByNameAndSex(String name, String sex);// and查询 List<Chaoba> findByNameAndSexAndAge(String name, String sex, String age);// 多个and查询 List<Chaoba> findByNameOrSex(String name, String sex);// or查询 List<Chaoba> findByName(String name, Pageable page);// 分页查询 List<Chaoba> findByName(String name, Sort sort);// 排序查询 List<Chaoba> findTop2ByName(String name);// 查询前几条 }
实体类
package SpringMogo.mongo; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field; @Document(collection = "chaoba1")
public class Chaoba {
@Id
private String id;
@Field("name")
private String name;
@Field("sex")
private String sex;
@Field("age")
private String age; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} }
测试类
package SpringMogo.mongo; import java.util.List; import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order; /**
* Hello world!
*
*/
public class App { private static ChaobaRepository chaobaRepository; static {
chaobaRepository = (ChaobaRepository) new ClassPathXmlApplicationContext("classpath:spring.xml")
.getBean("ChaobaRepository");
} public static void main(String[] args) {
System.out.println(chaobaRepository.count()); // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸");
// And查询
// List<Chaoba> result=
// chaobaRepository.findByNameAndSexAndAge("chaoba4565","男","20");
// Or查询
// List<Chaoba> result= chaobaRepository.findByNameOrSex("chaoba4565","女");
// 分页查询
// List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new PageRequest(1,
// 5));
// 排序查询
// List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new
// Sort(Order.asc("title"))); // Top查询
List<Chaoba> result = chaobaRepository.findTop2ByName("暮雪超霸"); for (Chaoba chaoba : result) {
System.out.println(chaoba.getName());
}
}
}

MongoDb学习(四)--Repository的更多相关文章

  1. [转载]MongoDB学习 (四):创建、读取、更新、删除(CRUD)快速入门

    本文介绍数据库的4个基本操作:创建.读取.更新和删除(CRUD). 接下来的数据库操作演示,我们使用MongoDB自带简洁但功能强大的JavaScript shell,MongoDB shell是一个 ...

  2. MongoDB 学习四 : 查询(续)

    接着上章,继续介绍MongoDB的查询. Querying on Embedded Documents 有两种方式查询嵌入式的子Documents:查询整个Document或者查询个别的键值对. 查询 ...

  3. mongodb学习(四)CRUD操作

    CRUD操作: 1. 插入操作: 直接使用 insert可执行单个操作,也可以执行批量操作 书上的batchInsert会报错.似乎被废弃了. db.foo.insert({"bar&quo ...

  4. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

  5. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

  6. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  7. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  8. MongoDB学习路线

    转载博客: 1.MongoDB学习笔记(一)MongoDB概述和安装 http://www.cnblogs.com/wupeiqi/archive/2013/05/12/3074478.html 2. ...

  9. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  10. MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁

    权限                                                                                             绑定内网I ...

随机推荐

  1. 喜欢 Dapper 的朋友看过来,送一份厚礼

    写在开头 众所周知 Dapper 是 .NET 下最轻最快的 ORM,它是喜欢写 SQL 码农的福音,相对于 SqlHelper 它更加方便,据统计 10个 .NETer 有 9个 用过 Dapper ...

  2. Java基础学习之面向对象(4)

    目录 1.面向对象概述 1.1.类与对象的关系 1.2.类的具体描述 2.面向对象的三大特性 2.1.继承 2.2.多态 2.3.封装 1.面向对象概述 1.1.类与对象的关系 有对象吗,没有的话我给 ...

  3. LeetCode初级算法之字符串:7 整数反转

    整数反转 题目地址:https://leetcode-cn.com/problems/reverse-integer/ 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 ...

  4. AT2688 [ARC080C] Young Maids

    一道挺有意思的题目,在这里记录一下. 题目大意 给你一个长度为 \(n\) 的排列,每一次你可以取出相邻的两个数将其放在答案序列的开头,最后问你字典序最小的答案序列是什么. 题解 由于最后是求字典序最 ...

  5. 题解-Sakuya's task

    题面 Sakuya's task \[\left(\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\right)\bmod 10^9+7 \] 数据范围:\(1\ ...

  6. 题解-CF1140E Palindrome-less Arrays

    CF1140E Palindrome-less Arrays \(n\) 和 \(k\) 和 \(n\) 个数的序列 \(a\).把 \(a\) 中的 \(-1\) 替换成 \([1,k]\) 之间的 ...

  7. 解压版mysql+免破解版Navicat,好用!

    解压版mysql安装流程 获取mysql压缩包 获取地址: 链接:https://pan.baidu.com/s/1HqdFDQn_6ccPM0gOftApIg 提取码:n19t 获取压缩包后可安装压 ...

  8. 使用MySQL乐观锁解决超卖问题

    在秒杀系统设计中,超卖是一个经典.常见的问题,任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难点. 1 超卖问题描述 在多个用户同时发起对同一 ...

  9. 《深入理解计算机系统》实验三 —— Buf Lab

    这是CSAPP的第三个实验,主要让我们熟悉GDB的使用,理解程序栈帧的结构和缓冲区溢出的原理. 实验目的   本实验的目的在于加深对IA-32函数调用规则和栈结构的具体理解.实验的主要内容是对一个可执 ...

  10. 漫谈 HTTP 性能优化

    本文主要是侧重于 HTTP 的优化,对于 HTTPS 后续文章会讲. 既然要做性能优化,那么,我们就需要知道:什么是性能?它都有哪些指标,又应该如何度量,进而采取哪些手段去优化? "性能&q ...