zoukankan      html  css  js  c++  java
  • spring data mongodb 操作

    xml配置(mongo集群方式):

    <?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/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        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.xsd">
    
    	<!--credentials的配置形式是:用户名:密码@默认数据库-->
    		<!-- credentials="${mongo.username}:${mongo.password}@${mongo.dbname}" -->
    	<mongo:mongo-client id="mongoClient" replica-set="${mongo.replica.set.address}">
    		<mongo:client-options 
    			connections-per-host="${mongo.connections_per_host}" 
    			threads-allowed-to-block-for-connection-multiplier="${mongo.threads_allowed_to_block_for_connection_multiplier}" 
    			connect-timeout="${mongo.connect_timeout}" 
    			max-wait-time="${mongo.max_wait_time}" 
    			socket-timeout="${mongo.socket_timeout}"
                />
    	</mongo:mongo-client>
    	
    	<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}" mongo-ref="mongoClient"  />
    	
    	  <!--首先列一下WriteConcern的几种抛出异常的级别参数:
        WriteConcern.NONE:没有异常抛出
        WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常
        WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
        WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
        WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
        WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
        WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。 -->
    	<mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory" write-concern="MAJORITY" />
    
    
    </beans>   
    

      mongo.peoperties:

    mongo.replica.set.address=192.168.10.145:60000,192.168.10.146:60000,192.168.10.147:60000  
    mongo.dbname=boshidun
    mongo.connections_per_host=100
    mongo.threads_allowed_to_block_for_connection_multiplier=10
    mongo.connect_timeout=10000
    mongo.max_wait_time=120000
    mongo.socket_timeout=0
    

      BaseRepository

      

    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    
    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;
    
    public abstract class BaseRepository<T> {
    
    	private Class<T> entityClass;
    
    	@SuppressWarnings("unchecked")
    	public BaseRepository() {
    		Type genType = getClass().getGenericSuperclass();
    		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
    		entityClass = (Class<T>) params[0];
    	}
    
    	public void insert(T entity) {
    		this.getMongoTemplate().insert(entity);
    	}
    
    	public void update(Query query, Update update) {
    		this.getMongoTemplate().findAndModify(query, update, entityClass.getClass());
    	}
    
    	public long count(Query query) {
    		return this.getMongoTemplate().count(query, entityClass.getClass());
    	}
    
    	@SuppressWarnings("unchecked")
    	public T findById(String id) {
    		Query query = new Query();
    		query.addCriteria(new Criteria("_id").is(id));
    		return (T) this.getMongoTemplate().findOne(query, entityClass.getClass());
    	}
    
    	protected abstract MongoTemplate getMongoTemplate();
    
    }
    

      

    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Sort;
    import org.springframework.data.domain.Sort.Direction;
    import org.springframework.data.domain.Sort.Order;
    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.stereotype.Repository;
    
    
    @Repository
    public class UserRepository extends BaseRepository<User>{
    
    	@Autowired
    	private MongoTemplate mongoTemplate;
    
    	public List<User> findList(int skip, int limit) {
    		Query query = new Query();
    		query.with(new Sort(new Order(Direction.ASC, "id")));
    		query.skip(skip).limit(limit);
    		return this.mongoTemplate.find(query, User.class);
    	}
    
    	public List<User> findListByApplyId(String applyId) {
    		Query query = new Query();
    		query.addCriteria(new Criteria("apply_id").is(applyId));
    		return this.mongoTemplate.find(query, User.class);
    	}
    
    	@Override
    	protected MongoTemplate getMongoTemplate() {
    		return mongoTemplate;
    	}
    
    }
    

      

  • 相关阅读:
    几个简单的定律
    poj 2443 Set Operation 位运算
    博弈论 wythff 博弈
    BZOJ 2120 树状数组套平衡树
    HDU 1392 凸包
    ZOJ 1648 线段相交
    HDU 1756 点在多边形内
    SPOJ 1811 LCS 后缀自动机
    BZOJ 1901 树状数组+函数式线段树
    HDU 1086 线段相交(不规范相交模板)
  • 原文地址:https://www.cnblogs.com/chyg/p/7592816.html
Copyright © 2011-2022 走看看