日期:2014-05-16 浏览次数:20540 次
mongoDB
最近公司的项目有用到mongodb,主要用于存储日志记录,所以研究了下它和spring的集成,并且做了个简单的CRUD的封装,首先用到的包是:
spring-3.1.x以上的相关包(必须是3.1.x以上,否则集成之后运行会报错)
spring-data-mongodb-1.3.0.M1.jar
先看配置文件(spring-mongodb.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation=
"http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:db-factory id="mongoDbFactory"
host="${mongo.host}"
port="${mongo.port}"
dbname="${mongo.dbname}"
username="${mongo.username}"
password="${database.password}"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>
接下来就是CRUD封装类
package cn.sunsharp.alibaba.core.mongo;
import java.util.List;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import cn.sunsharp.alibaba.core.Page;
public interface BaseMongoDAO<T> {
/**
* 通过条件查询实体(集合)
*
* @param query
*/
public List<T> find(Query query) ;
/**
* 通过一定的条件查询一个实体
*
* @param query
* @return
*/
public T findOne(Query query) ;
/**
* 通过条件查询更新数据
*
* @param query
* @param update
* @return
*/
public void update(Query query, Update update) ;
/**
* 保存一个对象到mongodb
*
* @param entity
* @return
*/
public T save(T entity) ;
/**
* 通过ID获取记录
*
* @param id
* @return
*/
public T findById(String id) ;
/**
* 通过ID获取记录,并且指定了集合名(表的意思)
*
* @param id
* @param collectionName
* 集合名
* @return
*/
public T findById(String id, String collectionName) ;
/**
* 分页查询
* @param page
* @param query
* @return
*/
public Page<T> findPage(Page<T> page,Query query);
/**
* 求数据总和
* @param query
* @return
*/
public long count(Query query);
}