MongoDb学习(四)--Repository
在学习这个的时候。关于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的更多相关文章
- [转载]MongoDB学习 (四):创建、读取、更新、删除(CRUD)快速入门
本文介绍数据库的4个基本操作:创建.读取.更新和删除(CRUD). 接下来的数据库操作演示,我们使用MongoDB自带简洁但功能强大的JavaScript shell,MongoDB shell是一个 ...
- MongoDB 学习四 : 查询(续)
接着上章,继续介绍MongoDB的查询. Querying on Embedded Documents 有两种方式查询嵌入式的子Documents:查询整个Document或者查询个别的键值对. 查询 ...
- mongodb学习(四)CRUD操作
CRUD操作: 1. 插入操作: 直接使用 insert可执行单个操作,也可以执行批量操作 书上的batchInsert会报错.似乎被废弃了. db.foo.insert({"bar&quo ...
- MongoDB学习(四)客户端工具备份数据库
在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...
- MongoDB学习笔记(四)--索引 && 性能优化
索引 基础索引 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记(转)
MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...
- MongoDB学习路线
转载博客: 1.MongoDB学习笔记(一)MongoDB概述和安装 http://www.cnblogs.com/wupeiqi/archive/2013/05/12/3074478.html 2. ...
- MongoDB学习笔记(五)--复制集 && sharding分片
主从复制 主从节点开启 主节 ...
- MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁
权限 绑定内网I ...
随机推荐
- 单体->集群->模块化->分布式微服务
开头语: 每篇一段开头语,在技术的道路中寻找文采的乐趣.(如果随笔中都是大白话勿喷,兄弟姐妹们) 单体项目 单体项目适用于小型开发,或自己来进行小项目的测试和使用. 单体项目的缺憾 多人开发项目所出现 ...
- Django----初始化项目结构
1.初始化项目结构图 │ .gitignore # 提交git仓库时,不提交的文件必须要在这里进行标注 │ README.en.md # 英文(项目介绍) │ README.md # 中文项目简介 │ ...
- Spring Cloud Alibaba 初体验(一) Nacos 配置中心
一.Nacos 下载与初始化配置 本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases Nacos 单机模式支持持久化配置到 MySQL 数 ...
- Spring Cloud 学习 (三) Feign
新建 spring-cloud-eureka-feign-client Module pom <parent> <artifactId>spring-cloud-parent& ...
- 本地eclipse java api连接远程虚拟机HBase
1.本地与远程连通 无论是域名或者ip都可以,另外需保证HBase在虚拟机集群上正常运行. 2.本地要有一个跟远程相同的hadoop环境 当然不相同,只要兼容也可以,现采用hadoop-2.5.0-c ...
- PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 在<moviepy音视频剪辑:音视 ...
- Hbase 2.2.2 安装、配置(兼容 Hadoop 3.1.3)
准备 Hbase 2.2.2 安装包 下载链接 链接:https://pan.baidu.com/s/1TqEry-T7sYpq4PdhgLWdcQ 提取码:de5z 安装 上传到虚拟机上,之后解压即 ...
- 用Python爬取了三大相亲软件评论区,结果...
小三:怎么了小二?一副愁眉苦脸的样子. 小二:唉!这不是快过年了吗,家里又催相亲了 ... 小三:现在不是流行网恋吗,你可以试试相亲软件呀. 小二:这玩意靠谱吗? 小三:我也没用过,你自己看看软件评论 ...
- (数据科学学习手札99)掌握pandas中的时序数据分组运算
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在使用pandas分析处理时间序列数据 ...
- Scrum 冲刺 第四篇
Scrum 冲刺 第四篇 每日会议照片 昨天已完成工作 队员 昨日完成任务 黄梓浩 初步完成app项目架构搭建 黄清山 完成部分个人界面模块数据库的接口 邓富荣 完成部分后台首页模块数据库的接口 钟俊 ...