您的位置:首页 > 数据库 > Mongodb

MongoDB的java操作工具

2016-05-26 12:36 465 查看
之前看到一些mongoDB的java操作方式,但是要不做反射,要不就会创建很多操作对象,这样比较麻烦,下面这种方式只需要一个操作对象就可以获取所有的Entity,直接上代码

public interface MongoDao<T> {
/**
* 通过条件查询实体(集合)
*
* @param query
*/
public List<T> find(Query query, Class<T> entity) ;

/**
* 通过条件查询实体(集合)
*
*/
public List<T> findAll(Class<T> entity) ;

/**
* 通过一定的条件查询一个实体
*
* @param query
* @return
*/
public T findOne(Query query, Class<T> entity) ;

/**
* 保存一个对象到mongodb
*
* @param entity
* @return
*/
//    public T save(T entity) ;

/**
* 通过ID获取记录
*
* @param id
* @return
*/
public T findById(String id, Class<T> entity) ;

/**
* 通过ID获取记录,并且指定了集合名(表的意思)
*
* @param id
* @param collectionName
*            集合名
* @return
*/
public T findById(String id, String collectionName, Class<T> entity) ;

/**
* 分页查询
* @param page
* @param query
* @return
*/
public Page<T> findPage(Page<T> page,Query query, Class<T> entity);

/**
* 求数据总和
* @param query
* @return
*/
public long count(Query query, Class<T> entity);

}


实现类

public class MongoManager<T> implements MongoDao<T> {

protected MongoTemplate mongoTemplate;

public MongoManager(String host, int port, String databaseName) {
try {
mongoTemplate = new MongoTemplate(new Mongo(host, port), databaseName);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}

@Override
public List<T> find(Query query, Class entity) {
return mongoTemplate.find(query, entity);
}

@Override
public List<T> findAll(Class<T> entity) {
return mongoTemplate.findAll(entity);
}

@Override
public T findOne(Query query, Class<T> entity) {
return mongoTemplate.findOne(query, entity);
}

@Override
public T findById(String id, Class<T> entity) {
return mongoTemplate.findById(id, entity);
}

@Override
public T findById(String id, String collectionName, Class<T> entity) {
return mongoTemplate.findById(id, entity, collectionName);
}

@Override
public Page<T> findPage(Page<T> page, Query query, Class<T> entity) {
long count = count(query, entity);

//        page.setTotal(count);
int pageNumber = page.getNumber();
int pageSize = page.getSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List<T> rows = this.find(query, entity);
page = new PageImpl(rows);
//        page.setRows(rows);
return page;
}

@Override
public long count(Query query, Class<T> entity) {
return mongoTemplate.count(query, entity);
}
}

调用:

mongoManager.findAll(XXX.class);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息