一大波福利正在向你奔来
mongdb 数据库操作 Spring 结合mongdb做数据的增删改查。
package com.tjcb.dbms.metadata.dao;
import java.util.List;
import java.util.Set;
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;
import com.mongodb.DBCollection;
import com.mongodb.WriteResult;
@SuppressWarnings("unchecked")
public abstract class MongodbBaseDao<T> {
/**
* spring mongodb 集成操作类
*/
@Autowired
protected MongoTemplate mongoTemplate;
/**
* 获取Mongo操作的模板类
* @return
*/
public MongoTemplate getMongoTemplate()
{
return mongoTemplate;
}
/**
* 通过条件查询列表
* @param query
* @return
*/
public List<T> findList(Query query)
{
return mongoTemplate.find(query,this.getEntityClass());
}
/**
* 通过查询条件和集合名称查询列表
* @param query
* @param collectionName
* @return
*/
public List<T> findList(Query query,String collectionName)
{
return mongoTemplate.find(query,getEntityClass() , collectionName);
}
/**
* 查找某一个集合中所有的数据
* @param collectionName
* @return
*/
public List<T> findAllInCollection(String collectionName){
return mongoTemplate.findAll(this.getEntityClass(), collectionName);
}
/**
* 返回数据行的个数
* @param query
* @return
*/
public long getCount(Query query)
{
return mongoTemplate.count(query, this.getEntityClass());
}
/**
* 查询所有数据
* @return
*/
public List<T> findAll()
{
return mongoTemplate.findAll(this.getEntityClass());
}
/**
*通过条件查询一个实体
* @param query
* @return
*/
public T findOne(Query query)
{
return (T) mongoTemplate.findOne(query,this.getEntityClass());
}
/**
* 通过条件更新数据
* @param query
* @param update
*/
public int update(Query query,Update update)
{
WriteResult result= mongoTemplate.upsert(query, update, this.getEntityClass());
return result.getN();
}
/**
* 通过条件更新数据
* @param query
* @param update
* @param collectionName
* @return
*/
public int update(Query query,Update update,String collectionName)
{
WriteResult result= mongoTemplate.upsert(query, update, this.getEntityClass(), collectionName);
return result.getN();
}
/**
* 删除数据
* @param query
* @return
*/
public int delete(Query query){
WriteResult result= mongoTemplate.remove(query, this.getEntityClass());
return result.getN();
}
/**
* 依据集合的名称删除数据
* @param query
* @param collectionName
* @return
*/
public int delete(Query query,String collectionName)
{
WriteResult result= mongoTemplate.remove(query, collectionName);
return result.getN();
}
/**
* 保存对象
* @param entity
* @return
*/
public T save(T entity)
{
mongoTemplate.save(entity);
return entity;
}
/**
* 插入数据
* @param entity
* @return
*/
public T insert(T entity)
{
mongoTemplate.insert(entity);
return entity;
}
/**
* 插入数据
* @param entity
* @param collectionName
*/
public void insert(T entity,String collectionName)
{
mongoTemplate.insert(entity, collectionName);
}
/**
* 插入数据
* @param list
* @param collectionName
*/
public void insertAll(List<T> list,String collectionName)
{
mongoTemplate.insert(list,collectionName);
}
/**
* 插入多条数据
* @param list
* @return
*/
public List<T> insertMore(List<T> list)
{
mongoTemplate.insertAll(list);
return list;
}
/**
* 通过ID获取记录
* @param id
* @return
*/
public T get(String id)
{
return (T) mongoTemplate.findById(id, getEntityClass());
}
/**
* 通过ID和集合的名称查询记录
* @param id
* @param colleationName
* @return
*/
public T get(String id,String colleationName)
{
return (T)mongoTemplate.findById(id, getEntityClass(),colleationName);
}
/**
* 获取所有的集合
* @return
*/
public Set<String> getCollectionNames(){
return mongoTemplate.getCollectionNames();
}
/**
* 根据名称获取集合
* @param collectionName
* @return
*/
public DBCollection getDBCollectionByName(String collectionName){
return mongoTemplate.getCollection(collectionName);
}
/**
* 创建集合
* @param collectionName
*/
public void createCollection(String collectionName)
{
if(!mongoTemplate.collectionExists(collectionName))
mongoTemplate.createCollection(collectionName);
}
/**
* 删除集合
* @param collectionName
*/
public void dropCollection(String collectionName)
{
if(mongoTemplate.collectionExists(collectionName));
mongoTemplate.dropCollection(collectionName);
}
/**
* 获取需要操作的实体类class
*
* @return
*/
protected abstract Class<T> getEntityClass();
}