前言
本文主要给大家介绍了关于利用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); } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。
如对本文有疑问, 点击进行留言回复!!
SpringBoot引用阿里easyexcel,Excel导出返回浏览器下载
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论