前言

本文主要给大家介绍了关于利用Spring Data MongoDB持久化文档数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
介绍
Spring Data MongoDB
1.Spring Data MongoDB提供了三种方式在Spring应用中使用MongoDB
import java.util.Collection;
import java.util.LinkedHashSet;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* Spring Data MongoDB注解将Java类型映射为文档
*/
@Document //这是一个文档
public class Order {
@Id //指定id
private String id;
@Field("client") //覆盖默认的域名
private String customer;
private String type;
private Collection<Item> items = new LinkedHashSet<>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Collection<Item> getItems() {
return items;
}
public void setItems(Collection<Item> items) {
this.items = items;
}
}
2.启用MongoDB
第一种方式:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.mongodb.MongoClient;
/**
*
* Spring Data MongoDB的配置
*
*/
@Configuration
@EnableMongoRepositories(basePackages="com.adagio.db") //启用MongoDB的Repository功能
public class MongoConfig {
/**
* MongoTemplate Bean
* @param mongoDbFactory
* @return
*/
@Bean
public MongoOperations mongoTemplate(){
return new MongoTemplate(mongoDbFactory());
}
/**
* MongoDbFactory bean
* @return
*/
public MongoDbFactory mongoDbFactory(){
return new SimpleMongoDbFactory(mongoClient(), "com.adagio.db");
}
/**
* MongoClient bean
* @return
*/
public MongoClient mongoClient(){
return new MongoClient("localhost");
}
}
第二种方式
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
/**
*
* Spring Data MongoDB的配置
* 扩展AbstractMongoConfiguration
*
*/
@Configuration
@EnableMongoRepositories(basePackages="com.adagio.db") //启用MongoDB的Repository功能
public class MongoConfig2 extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "OrdersDB"; //指定数据库名
}
@Autowired
private Environment env;
@Override
public Mongo mongo() throws Exception {
// return new MongoClient(); //创建Mongo客户端
//如果MongoDB服务器运行在其他的机器上
// return new MongoClient("mongoServer");
//如果MongoDB服务器监听的端口不是默认端口27017
// return new MongoClient("mongoServer", 37017);
//如果MongoDB服务器在生产配置上,启用了认证功能
MongoCredential credential = MongoCredential.createCredential(
env.getProperty("mongo.username") , "OrdersDB",
env.getProperty("mongo.password").toCharArray());
return new MongoClient(
new ServerAddress("localhost", 37017),
Arrays.asList(credential));
}
}
3.为模型添加注解,实现MongoDB持久化
Order.items属性,不是 关联关系,会完全嵌入到Order中4.使用MongoTemplate访问MongoDB
5.编写MongoDB Repository
6.查询方式:
//自定义查询
List<Order> findByCustomer(String customer);
List<Order> getByCustomer(String customer);
List<Order> readByCustomer(String customer);
int countByCustomer(String customer);
List<Order> findByCustomerLike(String customer);
List<Order> findByCustomerAndType(String customer, String type);
List<Order> getByType(String type);
//指定查询
@Query("{customer:'Chuck Wagon'}")
List<Order> findChucksOrders();
混合自定义的功能
1.首先,定义中间接口
import java.util.List;
public interface OrderOperations {
List<Order> findOrderByType(String t);
}
2.编写混合实现
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
public class OrderOperationsimpl implements OrderOperations {
@Autowired
private MongoOperations mongo; //注入MongoOperations
@Override
public List<Order> findOrderByType(String t) {
String type = t.equals("NET") ? "WEB" : t;
//创建查询
Criteria where = Criteria.where("type").is(type);
Query query = Query.query(where);
//执行查询
return mongo.find(query, Order.class);
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# spring
# data
# mongodb
# spring4
# 数据持久化
# Spring Data MongoDB 数据库批量操作的方法
# SpringDataMongoDB多文档事务的实现
# Spring Data MongoDB中实现自定义级联的方法详解
# spring data 连接mongodb的两种方式
# 文档
# 自定义
# 关联关系
# 也会
# 相关内容
# 第一个
# 多个
# 有可能
# 说了
# 不多
# 其他的
# 将其
# 这是一个
# 第二个
# 给大家
# 三种
# 这篇文章
# 谢谢大家
# 数据库中
# 第二种
相关文章:
深圳网站制作培训,深圳哪些招聘网站比较好?
建站之星多图banner生成与模板自定义指南
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
装修招标网站设计制作流程,装修招标流程?
如何通过FTP空间快速搭建安全高效网站?
网站制作难吗安全吗,做一个网站需要多久时间?
网站制作公司排行榜,四大门户网站排名?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建站之星免费模板:自助建站系统与智能响应式一键生成
建站10G流量真的够用吗?如何应对访问高峰?
MySQL查询结果复制到新表的方法(更新、插入)
建站之星IIS配置教程:代码生成技巧与站点搭建指南
,有什么在线背英语单词效率比较高的网站?
如何通过山东自助建站平台快速注册域名?
如何彻底卸载建站之星软件?
如何零成本快速生成个人自助网站?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
广东企业建站网站优化与SEO营销核心策略指南
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Android使用GridView实现日历的简单功能
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
建站之星如何快速更换网站模板?
如何通过PHP快速构建高效问答网站功能?
建站之星×万网:智能建站系统+自助建站平台一键生成
制作网站的软件免费下载,免费制作app哪个平台好?
python的本地网站制作,如何创建本地站点?
如何快速搭建支持数据库操作的智能建站平台?
建站主机选虚拟主机还是云服务器更好?
如何在Golang中使用replace替换模块_指定本地或远程路径
*服务器网站为何频现安全漏洞?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何用5美元大硬盘VPS安全高效搭建个人网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
c# 服务器GC和工作站GC的区别和设置
定制建站如何定义?其核心优势是什么?
宿州网站制作公司兴策,安徽省低保查询网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何通过万网虚拟主机快速搭建网站?
网站微信制作软件,如何制作微信链接?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
制作证书网站有哪些,全国城建培训中心证书查询官网?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
制作网站的公司有哪些,做一个公司网站要多少钱?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
Java解压缩zip - 解压缩多个文件或文件夹实例
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何快速建站并高效导出源代码?
javascript基本数据类型及类型检测常用方法小结
建站之星如何保障用户数据免受黑客入侵?
*请认真填写需求信息,我们会在24小时内与您取得联系。