MongoDb学习三(spring-data-mongodb)
本文采用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)的更多相关文章
- spring data mongodb 配置遇到的几个问题
一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- Spring Data MongoDB 四:基本文档改动(update)(一)
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 二:MongoDB加入.删除.改动 一.简单介绍 Spring Data Mo ...
- Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
一.简介 Spring Data MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...
- spring data mongodb CURD
一.添加 Spring Data MongoDB 的MongoTemplate提供了两种存储文档方式,分别是save和insert方法,这两种的区别: (1)save :我们在新增文档时,如果有一 ...
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- 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 ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
随机推荐
- .NET Core/.NET 5.0 析构函数依然有效?
前言 最近看到小伙伴在.NET Core中用到了析构函数,不禁打一疑问,大部分情况下,即使在.NET Framework中都不会怎么用到析构函数,我想在.NET Core中是否还依然有效呢?随着时间推 ...
- DDD(领域驱动设计)--战术设计
前言 战术设计 战略设计为我们提供一种高层视野来审视我们的软件系统,主要包括领域/子域.通用语言.限界上下文和架构风格等概念, 而战术设计则将战略设计进行具体化和细节化,它主要关注的是技术层面的实施, ...
- MySQL索引(一)索引基础
索引是数据库系统里面最重要的概念之一.一句话简单来说,索引的出现其实是为了提高数据查询的效率,就像书的目录一样. 常见模型 索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,这里就介绍三种常 ...
- Python基础教程目录
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python部分代码样例 老猿Python重难点知识博文汇总 老猿Python博客地址 第1章 Python学习环境构建目 ...
- 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...
- Python匹配对象的groups、groupdict和group之间的关系
匹配对象的groups()方法返回一个包含所有参与匹配的子组(不含组0)的匹配到的搜索文本子串的元组,groupdict返回一个包含所有匹配到的命名组的组名为键值和命名组匹配到的搜索文本子串为值作为元 ...
- 第十四章、Model/View开发:Model/View架构程序设计模式
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中图像资源的使用及资源文件的管理
一.概述 在Qt Designer中要使用图片资源有三种方法:通过图像文件指定.通过资源文件指定.通过theme主题方式指定,对应的设置界面在需要指定图像的属性栏如windowIcon中通过点击属性设 ...
- LeetCode初级算法之字符串:387 字符串中的第一个唯一字符
字符串中的第一个唯一字符 题目地址:https://leetcode-cn.com/problems/first-unique-character-in-a-string/ 给定一个字符串,找到它的第 ...
- .pfx和.Cer 证书
通常情况下,作为文件形式存在的证书一般有三种格式: 第一种:带有私钥的证书,由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进 ...