package org.yeshi.utils.mongo;
|
|
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;
|
|
import javax.annotation.Resource;
|
import java.lang.reflect.ParameterizedType;
|
import java.util.List;
|
|
/**
|
* @author Administrator
|
* @title: MongodbBaseDao
|
* @description: base dao
|
* @date 2021/10/13 15:03
|
*/
|
public class MongodbBaseDao<T> {
|
|
@Resource
|
protected MongoTemplate mongoTemplate;
|
|
/**
|
* 插入数据
|
*
|
* @param bean
|
* @return
|
*/
|
public T save(T bean) {
|
mongoTemplate.save(bean);
|
return bean;
|
}
|
|
/**
|
* 根据主键更新数据
|
*
|
* @param query
|
* @param update
|
*/
|
public void update(Query query, Update update) {
|
mongoTemplate.upsert(query, update, this.getEntityClass());
|
}
|
|
/**
|
* 查询一个数据
|
*
|
* @param query
|
* @return
|
*/
|
public T findOne(Query query) {
|
return (T) mongoTemplate.findOne(query, this.getEntityClass());
|
}
|
|
/**
|
* 查询多个数据
|
*
|
* @param query
|
* @return
|
*/
|
public List<T> findList(Query query) {
|
return mongoTemplate.find(query, this.getEntityClass());
|
}
|
|
|
/**
|
* 统计数量
|
*
|
* @param query
|
* @return
|
*/
|
public long count(Query query) {
|
return mongoTemplate.count(query, this.getEntityClass());
|
}
|
|
/**
|
* 主键查询
|
*
|
* @param id
|
* @return
|
*/
|
public T get(Object id) {
|
return (T) mongoTemplate.findById(id, this.getEntityClass());
|
}
|
|
/**
|
* 通过主键删除
|
*
|
* @param id
|
*/
|
public void delete(Object id) {
|
Query query = Query.query(Criteria.where("id").is(id));
|
mongoTemplate.remove(query, getEntityClass());
|
}
|
|
public void delete(Query query) {
|
mongoTemplate.remove(query, getEntityClass());
|
}
|
|
@SuppressWarnings("unchecked")
|
protected Class<T> getEntityClass() {
|
Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
|
.getActualTypeArguments()[0];
|
return tClass;
|
}
|
|
}
|