本文采用2个种配置方式、xml配置  代码配置方式进行数据库的连接。
实现简单的增删该查等一些操作。代码都有注释

官方文档如下
https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/

具体代码如下
pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>SpringMogo</groupId>
<artifactId>chaoba</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>chaoba</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
</dependencies>
</project>

xml配置文件spring.xml 存放到资源文件夹即可

<?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" id="mongo"/>
<mongo:db-factory dbname="chaoba" mongo-ref="mongo"/> <bean id="MongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>
文章实体类
package document; import java.util.Date;
import java.util.List; import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field; @Document(collection="artcle_info")
public class Artcle {
@Id()
private String id;
@Field("title")
private String title;
@Field("content")
private String content;
@Field("tags")
private List<String> tags;
@Field("time")
private Date addTIme;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
public Date getAddTIme() {
return addTIme;
}
public void setAddTIme(Date addTIme) {
this.addTIme = addTIme;
} }
主要代码。增删改查
package SpringMogo.chaoba; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List; import org.bson.types.ObjectId;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import document.Artcle; /**
* Hello world!
*
*/
public class App {
/*
* 通过xml配置文件获取mongotemp
*/
private static MongoTemplate mongoTemp;
static {
mongoTemp = (MongoTemplate) new ClassPathXmlApplicationContext("classpath:spring.xml").getBean("MongoTemplate");
} public static void main(String[] args) { // insertArtcle();
// mongoTemp.getCollectionNames().forEach(System.out::println);
// updateArtcle();
// del();
} /*
* 插入。需要吧Document存入list
*/
private static void insertArtcle() {
List<Artcle> list = new ArrayList();
Artcle a = new Artcle();
a.setTitle("暮雪超霸");
a.setAddTIme(new Date());
a.setTags(Arrays.asList("帅哥", "最帅"));
a.setContent("暮雪超霸是一个小帅哥");
list.add(a);
mongoTemp.insert(list, Artcle.class);
} /*
* 修改 修改有多个重载方法。可以指定clas或者指定集合名称、。如果使用集合名称。key就是集合key 如果是clas。写实体名
*/
private static void updateArtcle() {
// 这种方法。如果查询条件不存在。不修改,不插入
mongoTemp.updateFirst(Query.query(new Criteria("title").is("暮雪超霸")), Update.update("content", "暮雪超霸是最帅的小哥哥"),
Artcle.class); // 查询条件如果不存在,。插入数据
mongoTemp.upsert(Query.query(new Criteria("title").is("暮雪超霸111")), Update.update("content", "暮雪超霸是最帅的小哥哥"),
Artcle.class); // 删除指定的key
mongoTemp.updateFirst(Query.query(new Criteria("title").is("暮雪超霸")), new Update().unset("title"), Artcle.class); // 删除数据。不返回数据
mongoTemp.remove(Query.query(Criteria.where("title").is("暮雪超霸")), Artcle.class); // 删除一条并返回数据
Artcle resu = (Artcle) mongoTemp.findAndRemove(Query.query(Criteria.where("title").is("暮雪超霸111")),
Artcle.class);
System.out.println(resu.getTitle());
// 删除多条;并返回数据
List<Artcle> list = mongoTemp.findAllAndRemove(Query.query(Criteria.where("title").is("暮雪超霸111")),
Artcle.class); } private static void del() {
// 删除数据。不返回数据
mongoTemp.remove(Query.query(Criteria.where("title").is("暮雪超霸")), Artcle.class); // 删除一条并返回数据
Artcle resu = (Artcle) mongoTemp.findAndRemove(Query.query(Criteria.where("title").is("暮雪超霸111")),
Artcle.class);
System.out.println(resu.getTitle());
// 删除多条;并返回数据
List<Artcle> list = mongoTemp.findAllAndRemove(Query.query(Criteria.where("title").is("暮雪超霸111")),
Artcle.class);
// 删除集合
mongoTemp.dropCollection(Artcle.class); // 删除库
mongoTemp.getDb().drop();
} private static void select() {
// 带条件查询
List<Artcle> list = mongoTemp.find(Query.query(Criteria.where("title").is("暮雪超霸")), Artcle.class); // 查询所有
List<Artcle> list1 = mongoTemp.findAll(Artcle.class); // 查询个数
long count = mongoTemp.count(Query.query(Criteria.where("title").is("暮雪超霸")), Artcle.class); // 查询一个
Artcle artcle = mongoTemp.findOne(Query.query(Criteria.where("title").is("暮雪超霸")), Artcle.class); // id查询
artcle = mongoTemp.findById(new ObjectId("5c04b4af4a24a32b24d8078c"), Artcle.class); // 分页查询 如果在大量数据下。先排序,然后记录上次最后一条数据id,如果大于上次id。limit 页数
list = mongoTemp.find(Query.query(Criteria.where("title").is("暮雪超霸")).skip(0).limit(10), Artcle.class); // in查询 还有and 大于小于 等方法
list1 = mongoTemp.find(Query.query(Criteria.where("title").in("暮雪超霸", "暮雪超霸1")), Artcle.class);
list1 = mongoTemp.find(Query.query(Criteria.where("title").orOperator(Criteria.where("title").is("暮雪超霸"))),
Artcle.class); // or查询
list1 = mongoTemp.find(Query.query(
new Criteria().orOperator(Criteria.where("title").is("暮雪超霸"), Criteria.where("title").is("暮雪超霸1"))),
Artcle.class); }
}
代码连接
package document; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory; import com.mongodb.MongoClient;
import com.mongodb.ServerAddress; public class MongoDbCodeContent {
/*
* 代码方式连接
*/ public static void main(String[] args) { MongoClient client = new MongoClient(new ServerAddress("127.0.0.1", 27017)); MongoTemplate mongoTemplate = new MongoTemplate(new SimpleMongoDbFactory(client, "chaoba"));
mongoTemplate.getCollectionNames().forEach(System.out::println); } }

MongoDb学习三(spring-data-mongodb)的更多相关文章

  1. spring data mongodb 配置遇到的几个问题

    一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...

  2. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)

    一.简单介绍 Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...

  3. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery

    一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...

  4. Spring Data MongoDB 四:基本文档改动(update)(一)

    Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 二:MongoDB加入.删除.改动 一.简单介绍 Spring Data  Mo ...

  5. Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)

    Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...

  6. Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)

    一.简介 Spring Data  MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...

  7. spring data mongodb CURD

    一.添加 Spring  Data  MongoDB 的MongoTemplate提供了两种存储文档方式,分别是save和insert方法,这两种的区别: (1)save :我们在新增文档时,如果有一 ...

  8. spring data mongodb中,如果对象中的属性不想加入到数据库字段中

    spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...

  9. Spring Data MongoDB example with Spring MVC 3.2

    Spring Data MongoDB example with Spring MVC 3.2 Here is another example web application built with S ...

  10. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

随机推荐

  1. 以前一个个文件删数据的我,今天终于找到了释放C盘空间的办法

    这是我刚刚清理的C盘,亲测有效!无需安装清理空间的软件,我的电脑品牌是华硕. win10的电脑应该都有搜索功能,如果没有开启,可以鼠标右键点击任务栏. 弹出菜单找到[搜索]-[显示搜索图标],勾选即可 ...

  2. JZOJ2020年8月12日提高组反思

    JZOJ2020年8月12日提高组反思 真·难亿一点点 T1 题目长并附带伤害-- 暴力搜 对于字符串,我选择\(Pascal\) T2 概率问题,再见 T3 样例没懂,再见 T4 有史以来见过的条件 ...

  3. 解决 Zuul 中 OAuth2 报 unauthorized 错误

    问题描述 微服务中使用 OAuth2 鉴权,直接访问正常,通过 Zuul 访问报错: { "error": "unauthorized", "erro ...

  4. PyQt(Python+Qt)学习随笔:Qt Designer中部件的windowTitle和windowOpacity属性

    windowOpacity 这个属性仅对window对象生效. windowOpacity为浮点数,表示透明度,为1完全不透明,为0完全透明,缺省是1. 可以通过windowOpacity().set ...

  5. Oracle批量新增数据最佳实践

    一.需求描述 现在的项目改造过程中,从国产的Gbase数据库改造为Oracle数据库,遇到一个问题有的业务操作需要批量新增数据. 这也是一个比较常规的操作,有很多地方确实需要一次性新增多条数据.Gba ...

  6. 优化 Webpack 的构建速度

    1.使用高版本的 Webpack 和 Node.js 2.多进程/多实例构建:HappyPack(不维护了).thread-loader 3.压缩代码 webpack-paralle-uglify-p ...

  7. es6 数组新增方法

    1.Array.from(): 这个函数的作用是将类似数组的对象转化为数组,比如DOM对象 let arrayLike = {      "0":"TangSir&quo ...

  8. nginx优化-转载

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  9. STL——容器(Map & multimap)的排序与遍历

    1. Map & multimap 的排序与遍历 map<T1,T2,less<T1> >  mapA; //该容器是按键的升序方式排列元素.如果未指定less< ...

  10. STL(标准模板库)

    STL 主要分为三类: container(容器) - 用来管理一组数据元素 lterator(迭代器) - 可遍历STL容器内全部或部分元素的对象 algorithm(算法) - 对数据进行处理(解 ...