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

[本篇文章主要介绍了mongodb对应java的常用增删改查的api,以及和spring集成后mongoTemplate的常用方法使用,废话不多说,直接上代码:1.首先上需要用到的两个实体类User和

但是 在每个页面中都要注入一次xml。

ApplicationContext ctx = new FileSystemXmlApplicationContext(

"WEB-INF/mongoConfig.xml");

MongoTemplate mongoTemplate = (MongoTemplate) ctx

.getBean("mongoTemplate");

而且对class的操作都没进行过方法的封装。

这次 我们用一个搭好的spring+strust+mongodb框架  对mongodb进行操作。

框架下载地址(我的运行环境是myeclipse10)

下载后如果要对项目继续重命名的话: 操作如下图:

BbqEfa.png

EBNnEn.png

7nArYv.png

框架中的结构如图:

V3quau.png

新建需要操作的class类

package com.mongo.entity;

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;

}

}

操作mongodb的接口和实现类: (基类和继承类)

基类:GenericReposityImpl

package com.mongo.reposity.Impl;

import java.util.List;

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.mongo.reposity.GenericReposity;

import com.mongodb.Mongo;

import com.mongodb.WriteResult;

public class GenericReposityImpl extends MongoTemplate implements GenericReposity {

public GenericReposityImpl(Mongo mongo, String databaseName) {

super(mongo, databaseName);

}

public List getAllObjects(Class clazz) {

return findAll(clazz);

}

public void saveObject(Object obj) {

insert(obj);

}

public void saveObjects(List objects) {

for (T t : objects) {

insert(t);

}

}

public T getObject(Class clazz, String id) {

return findOne(new Query(Criteria.where("id").is(id)), clazz);

}

public WriteResult updateObject(Class clazz, String id, String name) {

return updateFirst(new Query(Criteria.where("id").is(id)),

Update.update("name", name), clazz);

}

public void deleteObject(Class clazz, String id) {

remove(new Query(Criteria.where("id").is(id)), clazz);

}

public void createDbCollection(Class clazz) {

if (collectionExists(clazz)) {

createCollection(clazz);

}

}

public void dropDbCollection(Class clazz) {

if (collectionExists(clazz)) {

dropCollection(clazz);

}

}

}

接口:GenericReposity

package com.mongo.reposity.Impl;

import java.util.List;

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.mongo.reposity.GenericReposity;

import com.mongodb.Mongo;

import com.mongodb.WriteResult;

public class GenericReposityImpl extends MongoTemplate implements GenericReposity {

public GenericReposityImpl(Mongo mongo, String databaseName) {

super(mongo, databaseName);

}

public List getAllObjects(Class clazz) {

return findAll(clazz);

}

public void saveObject(Object obj) {

insert(obj);

}

public void saveObjects(List objects) {

for (T t : objects) {

insert(t);

}

}

public T getObject(Class clazz, String id) {

return findOne(new Query(Criteria.where("id").is(id)), clazz);

}

public WriteResult updateObject(Class clazz, String id, String name) {

return updateFirst(new Query(Criteria.where("id").is(id)),

Update.update("name", name), clazz);

}

public void deleteObject(Class clazz, String id) {

remove(new Query(Criteria.where("id").is(id)), clazz);

}

public void createDbCollection(Class clazz) {

if (collectionExists(clazz)) {

createCollection(clazz);

}

}

public void dropDbCollection(Class clazz) {

if (collectionExists(clazz)) {

dropCollection(clazz);

}

}

}

实现类:UserReposityImpl

package com.mongo.reposity.Impl;

import java.util.List;

import org.springframework.data.mongodb.core.query.Criteria;

import org.springframework.data.mongodb.core.query.Query;

import com.mongo.entity.User;

import com.mongo.reposity.UserReposity;

import com.mongodb.Mongo;

public class UserReposityImpl extends GenericReposityImpl implements

UserReposity {

public UserReposityImpl(Mongo mongo, String databaseName) {

super(mongo, databaseName);

// TODO Auto-generated constructor stub

}

public List getUsers(int begin, int end) {

return find(new Query().limit(end - begin).skip(begin), User.class);

}

public List getUsers(String Name) {

return find(

new Query(new Criteria("name")

.regex(".*?" + Name + ".*")).limit(5),

User.class);

}

public List getUsers(int begin, int end, List conditions) {

Query query = new Query();

if (conditions != null && conditions.size() > 0) {

for (Condition condition : conditions) {

query.addCriteria(Criteria.where(condition.getKey()).is(

condition.getValue()));

}

}

return find(query.limit(end - begin).skip(begin),User.class);

}

public long getCount(String message) {

Query query = new Query();

query.addCriteria(Criteria.where("message").is(message));

return count(query, User.class);

}

public List getUsersBynames(int begin, int end,

List names) {

Query query = new Query();

query.addCriteria(Criteria.where("name").in(names));

return find(query.limit(end - begin).skip(begin), User.class);

}

public WriteResult updateUserUpdateName(User user,String name) {

String id=user.getId();

return updateFirst(new Query(Criteria.where("id").is(id)),Update.update("name", name),User.class);

}

public void mapReduse(){

DBCollection coll = getCollection("user");

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()) {

Map object = cursor.next().toMap();

System.out.println(object.get("value"));

//        System.out.println(cursor.next().get("value"));

//        User user  = (User)cursor.next();

}

}

}

实现类接口:UserReposity

package com.mongo.reposity;

import java.util.List;

import com.mongo.entity.User;

public interface UserReposity extends GenericReposity{

public List getUsers(int begin,int end);

/**

*

* @param projectName

* @return

*/

public List getUsers(String projectName);

public List getUsers(int begin, int end, List conditions);

public long getCount(String message);

public List getUsersBynames(int begin, int end,

List names);

public WriteResult updateUserUpdateName(User user,String name);

}

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

条件类(辅助类):

Condition.java

package com.mongo.reposity;

/**

* 条件

*

* @作者 zoe

* @版本

* @更新时间

*/

public class Condition {

private String key;

private Object value;

public String getKey() {

return key;

}

public void setKey(String key) {

this.key = key;

}

public Object getValue() {

return value;

}

public void setValue(Object value) {

this.value = value;

}

}

相关配置文件xml:

common-beans.xml   可更改操作的数据库名称 目前为student 和 链接地址 192.168.0.121

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:mongo="http://www.springframework.org/schema/data/mongo"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">

info-reposity.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

parent="mongoTemplate">

parent="mongoTemplate">

getDateAcition.java

package com.mongo.action;

import java.util.Map;

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

import net.sf.json.util.CycleDetectionStrategy;

import org.springframework.data.mongodb.core.MongoOperations;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.data.mongodb.core.mapreduce.MapReduceOptions;

import org.springframework.data.mongodb.core.mapreduce.MapReduceResults;

import com.mongo.entity.User;

import com.mongo.reposity.UserReposity;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.MapReduceOutput;

import com.opensymphony.xwork2.ActionSupport;

public class getDataAction extends ActionSupport {

/**

*

*/

private UserReposity userReposity;

public void setUserReposity(UserReposity userReposity) {

this.userReposity = userReposity;

}

private JSONObject user;

private static final long serialVersionUID = 535742118015700220L;

@Override

public String execute() {

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.setIgnoreDefaultExcludes(false);

// jsonConfig.setExcludes(new String[] { "name" });

jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

// 新增数据

// User u=new User();

// u.setName("zoe");

// u.setMessage("first blood");

// userReposity.saveObject(u);

// System.out.println("写入完成"+u.toString());

// //查询数据

// //获取全部

// List us=userReposity.getAllObjects(User.class);

// //从数目上查询取0到1000

// List us1=userReposity.getUsers(0, 1000);

// //条件查询

// List cds=new ArrayList();

// Condition cd=new Condition();

// cd.setKey("name");

// cd.setValue("zoe");

// cds.add(cd);

// List us2=userReposity.getUsers(0, 1000, cds);

// //模糊查询

// List us3=userReposity.getUsers("oe");

// //查询数量

// long count=userReposity.getCount("first blood");

// //查询属于的集合(in) 不属于(nin)

// List names=new ArrayList();

// names.add("zoe");

// names.add("koe");

// List us4=userReposity.getUsersBynames(0, 1000,names);

//

// //更新

// User u=userReposity.getAllObjects(User.class).get(0);

// userReposity.updateUserUpdateName(u, "joe");

//

// //删除

// userReposity.deleteObject(User.class, "534cea00cf20ab0525bdc53e");

// mapreduce

MongoTemplate m = (MongoTemplate) userReposity;

DBCollection coll = m.getCollection("user"); //集合名

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());

// Map object = cursor.next().toMap();

// System.out.println(object.get("value"));

}

//MongoOperations mongoOps = (MongoOperations) userReposity;

//String map = "function() { emit(this.name, {count:1});}";

//String reduce = "function(key, values) {var total = 0;for(var i=0;i

//try {

//MapReduceResults results = mongoOps.mapReduce("requesterBill",

//map,

//reduce,

new MapReduceOptions().outputCollection("mr_out"),

//User.class);

//for (User valueObject : results) {

//System.out.println(valueObject);

//}

//} catch (Exception e) {

//e.printStackTrace();

//}

// String jsonfacility =

// "{\"id\":\"PublicSecurity\",\"name\":\"数据\",\"value\":\"123\"}";

// user = JSONObject.fromObject(jsonfacility);

//userReposity.mapReduse();

return SUCCESS;

}

public JSONObject getUser() {

return user;

}

public void setUser(JSONObject user) {

this.user = user;

}

}

action相关配置:

action.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

package.xml

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

"http://struts.apache.org/dtds/struts-2.1.7.dtd">

插入成功后 可以在数据库中看到:

jUnaae.png

AJ7jE3.png

jQneya.png

特殊查询用法积累:

添加在UserReposityImpl中

1.增加排序

public List getByLinkUrlId(int begin, int end, String linkUrlid,String orderField,Sort.Direction direction ) {

Query query = new Query();

query.addCriteria(Criteria.where("pageUrl.linkUrl.id").is(linkUrlid));

return find(query.limit(end - begin).skip(begin).with(new Sort(new Sort.Order(direction, orderField))),User.class);

}

2.按时间段查询

public List getLogs(List conditions,String beginDate,String endDate)

{

Query query = new Query();

if (conditions != null && conditions.size() > 0) {

for (Condition condition : conditions) {

query.addCriteria(Criteria.where(condition.getKey()).regex(

".*?\\" +condition.getValue()+ ".*"));

}

}

query.addCriteria(Criteria.where("crawlTime").lt(new Date(endDate)).gt(new Date(beginDate)));

return find(query,Log.class);

}

3.或者查询

Criteria criteria = new Criteria();

if (!StringUtils.isEmpty(data.get("name"))) {

criteria.orOperator(

Criteria.where("name").regex(

".*" + data.get("name") + ".*", "i"),

Criteria.where("chromosome").regex(

".*" + data.get("name") + ".*", "i"));

}

Query query = Query.query(criteria);

[见蛮多人搜java和Mongodb,那就再写点java操作Mongodb的项目心得。Mongodb的java驱动基本操作可看这里。其实Mongodb的java驱动可以完成大部分的操作和需求。但是当你的doc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.了解Spring 2.了解NoSQL和文档数据库 3.要求 4.其他帮助资源 4.1。支持 4.1.1。社区论坛 4.1.2。专业支持 4.2。发展之后 5.新&值得注意的 5.1。Spring Data MongoDB 2.1中的新特性 5.2。Spring Data MongoDB 2.0中的新特性 5.3。Spring Data MongoDB 1.10中的新特性 5.4。Spring Data MongoDB 1.9中的新特性 5.5。Spring Data MongoDB 1.8中的新特性 5.6。Spring Data MongoDB 1.7中有什么新功能 6.依赖 6.1。Spring Boot的依赖管理 6.2。Spring框架 7.使用Spring Data Repositories 7.1。核心概念 7.2。查询方法 7.3。定义存储库接口 7.3.1。微调储存库定义 7.3.2。空处理存储库方法 7.3.3。将存储库与多个Spring Data模块一起使用 7.4。定义查询方法 7.4.1。查询查询策略 7.4.2。查询创建 7.4.3。属性表达式 7.4.4。特殊参数处理 7.4.5。限制查询结果 7.4.6。流式查询结果 7.4.7。异步查询结果 7.5。创建存储库实例 7.5.1。XML配置 7.5.2。JavaConfig 7.5.3。独立使用 7.6。Spring Data存储库的自定义实现 7.6.1。定制个人存储库 7.6.2。自定义基础存储库 7.7。从聚合根发布事件 7.8。Spring数据扩展 7.8.1。Querydsl扩展 7.8.2。Web支持 7.8.3。存储库填充程序 7.8.4。传统网络支持 参考文档 8.介绍 8.1。文档结构 9. MongoDB支持 9.1。入门 9.2。示例存储库 9.3。用Spring连接到MongoDB 9.3.1。使用基于Java的元数据注册Mongo实例 9.3.2。使用基于XML的元数据注册Mongo实例 9.3.3。MongoDbFactory接口 9.3.4。使用基于Java的元数据注册MongoDbFactory实例 9.3.5。使用基于XML的元数据注册MongoDbFactory实例 9.4。MongoTemplate简介 9.4.1。实例化MongoTemplate 9.4.2。WriteResultChecking策略 9.4.3。WriteConcern 9.4.4。WriteConcernResolver 9.5。保存,更新和删除文档 9.5.1。如何_id在映射图层中处理该字段 9.5.2。类型映射 9.5.3。保存和插入文件的方法 9.5.4。更新集合中的文档 9.5.5。在集合中插入文档 9.5.6。在集合中查找和插入文档 9.5.7。删除文件的方法 9.5.8。乐观锁定 9.6。查询文件 9.6.1。查询集合中的文档 9.6.2。查询文件的方法 9.6.3。查询不同的值 9.6.4。地理空间查询 9.6.5。GeoJSON支持 9.6.6。全文查询 9.6.7。排序规则 9.6.8。JSON模式 9.6.9。流利的模板API 9.7。按实例查询 9.7.1。介绍 9.7.2。用法 9.7.3。示例匹配器 9.7.4。执行一个例子 9.7.5。无类型示例 9.8。减少地图操作 9.8.1。使用示例 9.9。脚本操作 9.9.1。使用示例 9.10。集团运营 9.10.1。使用示例 9.11。聚合框架支持 9.11.1。基本概念 9.11.2。支持的聚合操作 9.11.3。投影表达式 9.11.4。分面分类 9.12。用自定义转换器覆盖默认映射 9.12.1。使用已注册的Spring Converter进行保存 9.12.2。使用Spring转换器读取 9.12.3。使用MongoConverter注册Spring转换器 9.12.4。转换器消除歧义 9.13。索引和集合管理 9.13.1。创建索引的方法 9.13.2。访问索引信息 9.13.3。使用集合的方法 9.14。执行命令 9.14.1。执行命令的方法 9.15。生命周期事件 9.16。例外翻译 9.17。执行回调 9.18。GridFS支持 9.19。更改流 9.19.1。使用MessageListener更改流 9.19.2。更改流 - 无效 10.反应性的MongoDB支持 10.1。入门 10.2。使用Spring和Reactive Streams Driver连接到MongoDB 10.2.1。使用基于Java的元数据注册MongoClient实例 10.2.2。ReactiveMongoDatabaseFactory接口 10.2.3。使用基于

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值