CommonMongoDao
import java.util.List;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
/**
* @author
*
*/
public interface CommonMongoDao<T> {
/**
* 通过条件查询实体(集合)
*
* @param query
*/
public List<T> find(Query query) ;
/**
* 通过一定的条件查询一个实体
*
* @param query
* @return
*/
public T findOne(Query query) ;
/**
* 通过条件查询更新数据
*
* @param query
* @param update
* @return
*/
public boolean update(Query query, Update update,Class<T> clazz) ;
/**
* 保存一个对象到mongodb
*
* @param entity
* @return
*/
public T save(T entity) ;
/**
* 通过ID获取记录
*
* @param id
* @return
*/
public T findById(String id,Class<T> clazz) ;
/**
* 通过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);
/**
* @param id
* @return
*/
public boolean del(Query query, Class<T> clazz);
}
CommonMongoService
import java.util.List;
import javax.annotation.Resource;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
importcom.hrhq.core.common.dao.CommonMongoDao;
import com.hrhq.utils.ReflectUtils;
import com.mongodb.WriteResult;
/**
* @author
*
*/
@Service
@Transactional
public class CommonMongoService<T> implements CommonMongoDao<T> {
@Resource
MongoTemplate mongoTemplate;
@Override
public List<T> find(Query query) {
return mongoTemplate.find(query, this.getEntityClass());
}
@Override
public T findOne(Query query) {
return mongoTemplate.findOne(query, this.getEntityClass());
}
@Override
public boolean update(Query query, Update update,Class<T> clazz) {
WriteResult updateMulti = mongoTemplate.updateMulti(query, update, clazz);
int result = updateMulti.getN();
return result > 0 ? true : false;
}
@Override
public T save(T entity) {
mongoTemplate.insert(entity);
return entity;
}
@Override
public T findById(String id,Class<T> clazz) {
return mongoTemplate.findById(new ObjectId(id), clazz);
}
@Override
public T findById(String id, String collectionName) {
return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
}
/* @Override
public Page<T> findPage(Page<T> page,Query query){
long count = this.count(query);
page.setTotal(count);
int pageNumber = page.getPageNumber();
int pageSize = page.getPageSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List<T> rows = this.find(query);
page.setRows(rows);
return page;
} */
@Override
public long count(Query query){
return mongoTemplate.count(query, this.getEntityClass());
}
/**
* 获取需要操作的实体类class
*
* @return
*/
private Class<T> getEntityClass(){
return ReflectUtils.getSuperClassGenricType(getClass());
}
@Override
public boolean del(Query query, Class<T> clazz) {
WriteResult remove = mongoTemplate.remove(query,clazz);
int flag = remove.getN();
return flag > 0 ? true : false;
}
}