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 { @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 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 getEntityClass() { Class tClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; return tClass; } }