SpringDataForMongoDB

来源:互联网 发布:mac os系统官网下载 编辑:程序博客网 时间:2024/06/02 03:44
 
package springmongodb;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;public class BaseMongoDAOImpl<T> implements BaseMongoDAO<T> {private static final int DEFAULT_SKIP = 0;private static final int DEFAULT_LIMIT = 200;/** * spring mongodb 集成操作类  */protected MongoTemplate mongoTemplate;@Overridepublic List<T> find(Query query) {return mongoTemplate.find(query, this.getEntityClass());}@Overridepublic T findOne(Query query) {return mongoTemplate.findOne(query, this.getEntityClass());}@Overridepublic void update(Query query, Update update) {mongoTemplate.findAndModify(query, update, this.getEntityClass());}@Overridepublic T save(T entity) {mongoTemplate.save(entity);return entity;}@Overridepublic T findById(String id) {return mongoTemplate.findById(id, this.getEntityClass());}@Overridepublic T findById(String id, String collectionName) {return mongoTemplate.findById(id, this.getEntityClass(), collectionName);}@Overridepublic long count(Query query) {return mongoTemplate.count(query, this.getEntityClass());}/** * 获取需要操作的实体类class *  * @return */private Class<T> getEntityClass() {return getSuperClassGenricType(getClass(), 0);}@SuppressWarnings("all")private Class getSuperClassGenricType(Class clazz, int index) {Type genType = clazz.getGenericSuperclass();// 得到泛型父类// 如果没有实现ParameterizedType接口,即不支持泛型,直接返回Object.classif (!(genType instanceof ParameterizedType)) {return Object.class;}// 返回表示此类型实际类型参数的Type对象的数组,数组里放的都是对应类型的Class, 如BuyerServiceBean extends// DaoSupport<Buyer,Contact>就返回Buyer和Contact类型Type[] params = ((ParameterizedType) genType).getActualTypeArguments();if (index >= params.length || index < 0) {throw new RuntimeException("你输入的索引"+ (index < 0 ? "不能小于0" : "超出了参数的总数"));}if (!(params[index] instanceof Class)) {return Object.class;}return (Class) params[index];}/** * 注入mongodbTemplate *  * @param mongoTemplate */@Autowiredpublic void setMongoTemplate(MongoTemplate mongoTemplate) {this.mongoTemplate = mongoTemplate;}} 


Spring.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:batch="http://www.springframework.org/schema/batch"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/batch   http://www.springframework.org/schema/batch/spring-batch-2.2.xsd   http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context-3.0.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd       "><context:component-scan base-package="springmongodb" /><context:property-placeholder location="mongodb.properties" /><context:annotation-config /><bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean"><property name="host" value="localhost" /><property name="port" value="27017" /></bean><bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-arg name="mongo" ref="mongo" /><constructor-arg name="databaseName" value="test" /></bean><bean id="mongodb" class="springmongodb.BaseMongoDAOImpl"/><!-- <mongo:db-factory id="mongoDbFactory" host="${db.host}" port="${db.port}" dbname="${db.port}" /> --></beans>

所需的jar

commons-logging-1.1.1.jar
hibernate-validator-4.1.0.Final.jar
jackson-core-asl-1.7.2.jar
jackson-mapper-asl-1.7.2.jar
log4j-1.2.15.jar
mongo-java-driver-2.9.3.jar
mybatis-3.2.0-SNAPSHOT.jar
mybatis-spring-1.1.1.jar
servlet-api.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
spring-aop-3.2.2.RELEASE.jar
spring-aspects-3.2.2.RELEASE.jar
spring-beans-3.2.2.RELEASE.jar
spring-build-src-3.2.2.RELEASE.jar
spring-context-3.2.2.RELEASE.jar
spring-context-support-3.2.2.RELEASE.jar
spring-core-3.2.2.RELEASE.jar
spring-data-commons-1.5.0.RELEASE.jar
spring-data-mongodb-1.2.0.RELEASE.jar
spring-data-mongodb-cross-store-1.2.0.RELEASE.jar
spring-data-mongodb-log4j-1.2.0.RELEASE.jar
spring-expression-3.2.2.RELEASE.jar
spring-instrument-3.2.2.RELEASE.jar
spring-instrument-tomcat-3.2.2.RELEASE.jar
spring-jdbc-3.2.2.RELEASE.jar
spring-jms-3.2.2.RELEASE.jar
spring-orm-3.2.2.RELEASE.jar
spring-oxm-3.2.2.RELEASE.jar
spring-struts-3.2.2.RELEASE.jar
spring-test-3.2.2.RELEASE.jar
spring-tx-3.2.2.RELEASE.jar
spring-web-3.2.2.RELEASE.jar
spring-webmvc-3.2.2.RELEASE.jar
spring-webmvc-portlet-3.2.2.RELEASE.jar
tomcat-coyote.jar
validation-api-1.0.0.GA.jar


原创粉丝点击