mongodb工具方法,日志部分使用mongo
parent
9ea6567876
commit
d7b7501d19
@ -0,0 +1,50 @@
|
|||||||
|
package cn.estsh.i3plus.pojo.base.jpa.dao;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.pojo.base.common.Pager;
|
||||||
|
import org.bson.conversions.Bson;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
|
import org.springframework.data.repository.NoRepositoryBean;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 自定义Repository的方法接口
|
||||||
|
* @Reference : MongoRepository
|
||||||
|
* @Author : alwaysfrin
|
||||||
|
* @CreateDate : 2018-09-13 10:34
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
@NoRepositoryBean
|
||||||
|
public interface BaseMongoRepository<T, ID extends Serializable> extends MongoRepository<T, ID> {
|
||||||
|
|
||||||
|
T getById(long id);
|
||||||
|
|
||||||
|
List<T> findByProperty(String propertyName, Object value);
|
||||||
|
|
||||||
|
List<T> findByProperty(String propertyName, Object value,String orderByParam, int ascOrDesc);
|
||||||
|
|
||||||
|
List<T> findByPropertyLike(String propertyName, Object value);
|
||||||
|
|
||||||
|
List<T> findByPropertyLike(String propertyName, Object value,String orderByParam, int ascOrDesc);
|
||||||
|
|
||||||
|
T getByProperty(String propertyName, Object value);
|
||||||
|
|
||||||
|
List<T> findByBson(Bson bson);
|
||||||
|
|
||||||
|
List<T> findByBson(Bson bson,String orderByParam, int ascOrDesc);
|
||||||
|
|
||||||
|
long findByBsonCount(Bson bson);
|
||||||
|
|
||||||
|
List<T> findByBsonPager(Bson bson,Pager pager);
|
||||||
|
|
||||||
|
List<T> findByBsonPager(Bson bson,Pager pager,String orderByParam, int ascOrDesc);
|
||||||
|
|
||||||
|
long listCount();
|
||||||
|
|
||||||
|
List<T> listPager(Pager pager);
|
||||||
|
|
||||||
|
List<T> listPager(Pager pager,String orderByParam, int ascOrDesc);
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package cn.estsh.i3plus.pojo.base.jpa.factory;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.pojo.base.jpa.daoimpl.BaseMongoRepositoryImpl;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.data.mongodb.core.MongoOperations;
|
||||||
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
|
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
|
||||||
|
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactory;
|
||||||
|
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
|
||||||
|
import org.springframework.data.repository.core.RepositoryInformation;
|
||||||
|
import org.springframework.data.repository.core.RepositoryMetadata;
|
||||||
|
import org.springframework.data.repository.core.support.RepositoryFactorySupport;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 自定义mongodb持久化工厂类
|
||||||
|
* @Reference :
|
||||||
|
* @Author : alwaysfrin
|
||||||
|
* @CreateDate : 2018-09-13 14:55
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
public class BaseMongoRepositoryFactoryBean<R extends MongoRepository<T, I>, T, I extends Serializable> extends MongoRepositoryFactoryBean<R, T, I> {
|
||||||
|
public static final Logger LOGGER = LoggerFactory.getLogger(BaseMongoRepositoryFactoryBean.class);
|
||||||
|
|
||||||
|
public BaseMongoRepositoryFactoryBean(Class<? extends R> repositoryInterface) {
|
||||||
|
super(repositoryInterface);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RepositoryFactorySupport getFactoryInstance(MongoOperations operations) {
|
||||||
|
//LOGGER.info("【初始mongo持久仓】");
|
||||||
|
//生成持久mongo仓库实例
|
||||||
|
return new BaseMongoRepositoryFactory(operations);
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建一个内部类,该类不用在外部访问
|
||||||
|
private static class BaseMongoRepositoryFactory<T, I extends Serializable> extends MongoRepositoryFactory {
|
||||||
|
|
||||||
|
private final MongoOperations mongoOperations;
|
||||||
|
//private final MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext;
|
||||||
|
|
||||||
|
public BaseMongoRepositoryFactory(MongoOperations mongoOperations) {
|
||||||
|
super(mongoOperations);
|
||||||
|
this.mongoOperations = mongoOperations;
|
||||||
|
//this.mappingContext = mongoOperations.getConverter().getMappingContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置具体的实现类是BaseRepositoryImpl
|
||||||
|
@Override
|
||||||
|
protected Object getTargetRepository(RepositoryInformation information) {
|
||||||
|
MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(information.getDomainType());
|
||||||
|
return new BaseMongoRepositoryImpl(entityInformation, mongoOperations);
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置具体的实现类的class
|
||||||
|
@Override
|
||||||
|
protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
|
||||||
|
return BaseMongoRepositoryImpl.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue