但是其中的操作都比较直白 没有经过封装 而且 每次使用前都要先写 数据库名和Ip端口
这次我们把spring和mongodb整合起来
内容如下:
1.创建项目和配置xml
2.spring-mongodb的增删改查 mapreduce
1.创建项目和配置xml
我们首先创建一个叫SM的项目
然后增加web框架
增加web框架我们看到的项目如图:
解压得到lib文件夹和mongoConfig配置文件 这它们放入项目的WEB-INF文件夹中
放入xml后刷新我们看到的项目如图:
新建User类和UserService类如下:
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 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 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
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());
}
}
}
结果演示:
插入和查询所有
查询单个name为zoe的
模糊查询name中有o的
修改数据
删除数据
mapreduce统计数量