java-spring与mongodb的整合方式一 手动注入xml


 前面写了一篇   java中操作mongodb


但是其中的操作都比较直白 没有经过封装  而且  每次使用前都要先写 数据库名和Ip端口


这次我们把spring和mongodb整合起来 

内容如下:

1.创建项目和配置xml

2.spring-mongodb的增删改查 mapreduce



1.创建项目和配置xml

我们首先创建一个叫SM的项目

java-spring与mongodb的整合方式一 手动注入xml_第1张图片

java-spring与mongodb的整合方式一 手动注入xml_第2张图片



然后增加web框架

java-spring与mongodb的整合方式一 手动注入xml_第3张图片




增加web框架我们看到的项目如图:

java-spring与mongodb的整合方式一 手动注入xml_第4张图片



下载: 整合spring和mongodb用到的包和配置文件

解压得到lib文件夹和mongoConfig配置文件  这它们放入项目的WEB-INF文件夹中

java-spring与mongodb的整合方式一 手动注入xml_第5张图片


放入xml后刷新我们看到的项目如图:

java-spring与mongodb的整合方式一 手动注入xml_第6张图片



新建User类和UserService类如下:

java-spring与mongodb的整合方式一 手动注入xml_第7张图片



User.java

package mongo;

public class User {
	private String name;
	private String message;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	
}


Userservice.java

package mongo;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
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 com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.MapReduceOutput;

public class Userservice {

	private static String USERS_COLLECTION = "users";

	public static void main(String[] args) {
		ApplicationContext ctx = new FileSystemXmlApplicationContext(
				"WEB-INF/mongoConfig.xml");
		MongoTemplate mongoTemplate = (MongoTemplate) ctx
				.getBean("mongoTemplate");

		// 插入数据
//		 User user=new User();
//		 user.setName("zoe");
//		 user.setMessage("try insert");
//		 mongoTemplate.insert(user,USERS_COLLECTION);
//		 System.out.println("insert finish");

		// 查询
		// 查询全部
		// List<User> users=mongoTemplate.find(new Query(),
		// User.class,USERS_COLLECTION);
		// for(User a:users)
		// {
		// System.out.println(a.getName()+" "+a.getMessage());
		// }

		// 查询一个
		// User a = mongoTemplate.findOne(
		// new Query(Criteria.where("name").is("zoe")), User.class,
		// USERS_COLLECTION);
		// System.out.println(a.getName() + " " + a.getMessage());

		// 模糊查询
		// List<User> users = mongoTemplate.find(
		// new Query(new Criteria("name").regex(".*?" + "o" + ".*"))
		// .limit(9), User.class, USERS_COLLECTION);
		// for (User a : users) {
		// System.out.println(a.getName() + " " + a.getMessage());
		// }

		// 修改
		// User a = mongoTemplate.findOne(
		// new Query(Criteria.where("name").is("zoe")), User.class,
		// USERS_COLLECTION);
		// System.out.println(a.getName() + " " + a.getMessage());
		// mongoTemplate
		// .updateFirst(new Query(Criteria.where("name").is("zoe")),
		// new Update().set("message", "update success"),
		// USERS_COLLECTION);
		// User b = mongoTemplate.findOne(
		// new Query(Criteria.where("name").is("zoe")), User.class,
		// USERS_COLLECTION);
		// System.out.println(b.getName() + " " + b.getMessage());

		// 删除
//		User a = mongoTemplate.findOne(
//				new Query(Criteria.where("name").is("zoe")), User.class,
//				USERS_COLLECTION);
//		System.out.println(a);
//		mongoTemplate.remove(new Query(Criteria.where("name").is("zoe")),
//				USERS_COLLECTION);
//		User b = mongoTemplate.findOne(
//				new Query(Criteria.where("name").is("zoe")), User.class,
//				USERS_COLLECTION);
//		System.out.println(b);
		
		
		//mapreduce 统计同名数量
	    DBCollection coll = mongoTemplate.getCollection("users");
	    String map = "function() { emit(this.name, {count:1});}";
	    String reduce = "function(key, values) {var total = 0;for(var i=0;i<values.length;i++){total += values[i].count;}return {count:total};}";
	    String result = "resultCollection";
	    MapReduceOutput mapReduceOutput = coll.mapReduce(map,
	        reduce.toString(), result, null);
	    DBCollection resultColl = mapReduceOutput.getOutputCollection();
	    DBCursor cursor = resultColl.find();
	    while (cursor.hasNext()) {
	      System.out.println(cursor.next());
	    }
	  }
		

	}



结果演示:

插入和查询所有

java-spring与mongodb的整合方式一 手动注入xml_第8张图片


查询单个name为zoe的



模糊查询name中有o的

java-spring与mongodb的整合方式一 手动注入xml_第9张图片


修改数据

java-spring与mongodb的整合方式一 手动注入xml_第10张图片


删除数据



mapreduce统计数量



你可能感兴趣的:(java,mapreduce,spring,mongodb)