- 浏览: 325515 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
di1984HIT:
谢谢,写的不错。
使用hector操作Cassandra -
mr_von:
非常感谢!
paoding的分词使用 -
howgoo:
http://www.dhtmlx.com/docs/prod ...
dhtmlxGrid分页与排序 -
青春的、脚步:
谢谢
spring-data-mongodb的MongoTemplate 使用小例子 -
青春的、脚步:
xiaofancn 写道青春的、脚步 写道这个能查询都个值在某 ...
spring-data-mongodb的MongoTemplate 使用小例子
1、首先使用Eclipse的git插件把spring提供的示例下载下来
https://github.com/SpringSource/spring-data-document-examples.git
下载之后导入maven工程
2、首先看我们的domain定义,也就是entity。
org.springframework.data.mongodb.examples.hello.domain.Person
package org.springframework.data.mongodb.examples.hello.domain; import java.util.ArrayList; import java.util.List; import org.springframework.data.annotation.Id; import org.springframework.data.document.mongodb.mapping.Document; @Document public class Person { @Id private String id; private String name; private int age; private List<Account> accounts = new ArrayList<Account>(); public Person() { } public Person(String name, int age) { super(); this.name = name; this.age = 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<Account> getAccounts() { return accounts; } public void addAccount(Account account) { this.accounts.add(account); } public void setAccounts(List<Account> accounts) { this.accounts = accounts; } public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + ", accounts=" + accounts + "]"; } }
dao层的类org.springframework.data.mongodb.examples.hello.HelloMongo
package org.springframework.data.mongodb.examples.hello; import java.io.File; import java.io.IOException; import java.util.List; import java.util.Random; 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; import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.examples.hello.domain.Account; import org.springframework.data.mongodb.examples.hello.domain.Person; import org.springframework.stereotype.Repository; import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObjectBuilder; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInputFile; /** * * @author xiaofancn * * 参考 http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/ * 参考 http://nosql.mypopescu.com/post/816470307/tutorial-mongodb-in-java * */ @Repository public class HelloMongo { @Autowired MongoOperations mongoOperations; public void gridFSInput(String inputFilepath) { DB db = mongoOperations.getCollection( mongoOperations.getCollectionName(Person.class)).getDB(); db.requestStart(); File inputFile = new File(inputFilepath); GridFSInputFile gfsInput; try { gfsInput = new GridFS(db, "fs") .createFile(inputFile); gfsInput.setFilename("qq123456789logo");// 保存到数据库的文件名为qq123456789logo gfsInput.save(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } db.requestDone(); } public void gridFSOutput(String outputFilepath) { DB db = mongoOperations.getCollection( mongoOperations.getCollectionName(Person.class)).getDB(); GridFSDBFile gfsFile = new GridFS(db, "fs").findOne("qq123456789logo");// 查找文件名qq123456789logo输出保存 try { gfsFile.writeTo(outputFilepath); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void insert(int count) { if (mongoOperations.collectionExists(Person.class)) { mongoOperations.dropCollection(Person.class); } mongoOperations.createCollection(Person.class); for (int i = 0; i < count; i++) { Person p = new Person("小樊", i); Account a = new Account("1234-59873-893-1", Account.Type.SAVINGS, 123.45D); p.addAccount(a); mongoOperations.insert(p); } } public void delete(int age) { // 删除查询到的年龄 mongoOperations.remove(new Query(new Criteria("age").is(age)), Person.class); } public void alert(int age) { // 根据age查询,更新查询到的age字段为随机数 mongoOperations.updateMulti(new Query(new Criteria("age").is(age)), new Update().inc("age", new Random().nextInt()), Person.class); } public void alert(String name) { // 根据name查询,更新查询到的name字段为xiaofancn mongoOperations.updateMulti(new Query(new Criteria("name").in(name)), new Update().set("name", "xiaofancn"), Person.class); } public void query(int age) { // 根据age查询 List<Person> persons = mongoOperations.find(new Query(new Criteria( "age").is(age)), Person.class); for (Person p : persons) { System.out.println(p.toString()); } // ===========================jdbc原生的类 DBCollection personColl = mongoOperations.getCollection(mongoOperations .getCollectionName(Person.class)); BasicDBObject parameter = new BasicDBObject(); parameter.put("age", age); DBCursor item = personColl.find(parameter); while (item.hasNext()) { System.out.println(item.next()); } } /** * 统计这个年龄的人数 * @param age * @return */ public Long count(int age) { DBCollection personColl = mongoOperations.getCollection(mongoOperations .getCollectionName(Person.class)); BasicDBObject parameter = new BasicDBObject(); parameter.put("age", age); return personColl.count(parameter); } public void showAllOrederByAge(int startPage, DBObject sort, int countPerPage) { if (sort == null) {// 默认按照年龄的升序 sort = BasicDBObjectBuilder.start().add("age", 1).get(); } DBCollection personColl = mongoOperations.getCollection(mongoOperations .getCollectionName(Person.class)); DBCursor item = personColl.find().sort(sort) .skip((startPage-1) * countPerPage).limit(countPerPage); while (item.hasNext()) { // Person p = item.next();错误 DBObject parameter = item.next(); System.out.println(parameter); } } public void showAll() { List<Person> list = mongoOperations.findAll(Person.class); for (Person p : list) { System.out.println(p); } // =================大批量的查询尽量使用原生的函数,也要对应原生的文档结构。 DBObject sort = BasicDBObjectBuilder.start().add("age", -1).get(); DBCollection personColl = mongoOperations.getCollection(mongoOperations .getCollectionName(Person.class)); DBCursor item = personColl.find();// 查询前100条记录 while (item.hasNext()) { // Person p = item.next();错误 DBObject parameter = item.next(); System.out.println(parameter); } } }
// 参考 http://www.mongodb.org/display/DOCS/Updating#Updating-ModifierOperations // 对数组对象有效,数组对象后添加数据 mongoOperations.updateMulti(new Query(new Criteria("age").is(0)), new Update().push("name", "小樊"), Person.class); //找到数据,加法属性 age = age +-10 mongoOperations .updateMulti(new Query(new Criteria("age").is(0)), new Update().inc("age", -10), Person.class); //unset 重置属性值,数字为0,字符其他为null mongoOperations.updateMulti(new Query(new Criteria("age").is(0)), new Update().set("name", "小樊").set("age", -1), Person.class);
客户端org.springframework.data.mongodb.examples.hello.App
package org.springframework.data.mongodb.examples.hello; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Hello Mongo! */ public class App { public static void main(String[] args) { System.out.println("Bootstrapping HelloMongo"); ConfigurableApplicationContext context = null; // use @Configuration using Java: context = new ClassPathXmlApplicationContext( "META-INF/spring/bootstrap.xml"); // use XML application context: // context = new // ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml"); HelloMongo hello = context.getBean(HelloMongo.class); hello.delete(39); hello.query(39); //hello.showAll(); System.out.println("DONE!"); } }
参考
http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/
评论
6 楼
青春的、脚步
2012-11-23
谢谢
5 楼
青春的、脚步
2012-11-23
xiaofancn 写道
青春的、脚步 写道
这个能查询都个值在某个范围内的数据吗
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%3C%2C%3C%3D%2C%3E%2C%3E%3D
http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/#d0e1678
spring-data-mongodb里面的MongoOperations类,现在没大问题了
4 楼
xiaofancn
2012-11-22
青春的、脚步 写道
这个能查询都个值在某个范围内的数据吗
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%3C%2C%3C%3D%2C%3E%2C%3E%3D
http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/#d0e1678
3 楼
青春的、脚步
2012-11-22
这个能查询都个值在某个范围内的数据吗
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
比如年龄 20 到 70 的
貌似没有啊
楼主用过吗 这样的情况
2 楼
violetluna
2011-12-31
不错,谢谢了
1 楼
miller_cn
2011-10-11
很好的例子 谢谢
发表评论
-
spring cloud gateway 全局过滤器。
2019-03-17 23:11 487spring cloud gateway 网关 ... -
elasticsearch 5.4搜索
2017-05-19 08:37 148@Test public void t ... -
netty简单的操作memcached
2017-04-19 18:59 938pom文件 <dependency> ... -
juc系列-Executor框架
2017-03-20 13:34 659转自 juc系列-Executor框架 什 ... -
ReentrantLock 类
2017-03-19 21:11 11.1 什么是reentrantlock java.u ... -
juc之CountDownLatch、CyclicBarrier和Semaphore例子
2017-03-19 17:23 787import java.util.concurren ... -
netty客户端与服务端例子
2017-03-12 20:07 2762package com.snailteam.nett ... -
freemaker集成spring
2017-02-26 19:00 526<bean id="freeMark ... -
spring集成Hessian插件配置改成自动注入。
2017-02-10 15:39 791原来的配置 <bean name="/ ... -
web开发模版
2017-02-09 14:42 0# Rules reminder: # DEBUG &l ... -
Java多线程
2017-02-04 14:39 483线程状态图 新建状态(New): ... -
hash冲突解决
2017-01-23 18:30 4181、开放地址法有一个公式: m是hash表长度,di ... -
spring事务与锁汇总。
2017-01-22 17:58 3786spring事务传播 ... -
druid 表重写
2016-05-18 12:54 2414import com.alibaba.druid.sql. ... -
mybatis +spring 分库
2015-04-30 17:56 353<context:component-scan b ... -
Java并发任务处理例子
2014-02-12 16:06 1095public void init() { su ... -
JAVA动态代理模式
2012-10-03 01:01 1143这是我要实现的效果 public static ... -
paoding的分词使用
2012-06-13 21:30 4833paoding下载 http://code.googl ... -
使用spring-hadoop操作hadoop
2012-05-20 02:12 32参考文章 http://blog.springsource. ... -
solr3.5集成paoding和位置搜索及对solrj的使用。
2012-04-28 02:12 1918http://xiaofancn.iteye.com/blog ...
相关推荐
Spring-data-mongodb_1.9.4_API_docs
Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar
Spring-Data-MongoDB 1.9.3、MongoDB3.2整合
中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...
spring-data-mongodb-1.9.1.RELEASE.jar
spring支持mongodb的jar包
spring-data-mongodb已经对mongodb的操作做了一部分封装,但依然不够,Query Criteria Sort的操作依然有比较大的局限性,而且对于习惯sql操作的人来说,理解其使用法则依然稍显别扭。mongoHelper对spring-data-...
spring-data-mongodb-1.8.0.RELEASE.jar
java运行依赖jar包
spring-data-mongodb-referrence-docs-1.9.4
spring整合mongodb3.0的jar包,据说已经解决了最新用户验证的问题
spring-data-mongodb-reference 1.5.4
spring-data-mongodb-1.0.0.M2.jar ,spring 开源JAR包
spring-data-commons-1.9.0.RELEASE mongo-java-driver-2.11.3 spring-data-mongodb-1.6.1.RELEASE
Spring-data-mongodb的文档太少了,基本都是网页版,我把网页做成了chm方便开发人员查看,文档是英文原版,是从官网抓下来的
spring-data-mongodb-1.0.0.RC1-javadoc api
Spring3+Spring-data-mongodb1.5.6示例
Spring 4.1.3.RELEASE Spring-data-mongo 1.8.0 mongodb 3.1.0
spring data mongodb的demo程序,参考App.java中的调用方法,mongodb配置文件在resources目录下,整个项目使用maven,适合初学者学习。
软件介绍: ...mongo-java-driver-3.0.1.jarspring-data-commons-1.10.0.RELEASE.jarspring-data-commons-core-1.4.1.RELEASE.jarspring-data-mongodb-1.7.0.RELEASE.jar已经打包在一起了方便大家使用。