當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Data之MongoDB配置
生活随笔
收集整理的這篇文章主要介紹了
Spring Data之MongoDB配置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、重寫基類擴(kuò)展功能
package com.mk.mongodb.repository;import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.data.repository.NoRepositoryBean; import java.util.Collection; import java.util.List;@NoRepositoryBean public interface IBaseRepository<T, ID> extends MongoRepository<T, ID> {//根據(jù)id查詢對象T find(ID id);T findOne(Criteria criteria);//查詢對象idList<ID> findIdsByQuery(Query query);//根據(jù)字段名查詢對象列表List<T> listAll();//根據(jù)id列表查詢對象列表List<T> listByIds(Collection<ID> ids);//根據(jù)字段名查詢對象列表List<T> listByField(String fieldName, Collection values);//根據(jù)字段名查詢對象列表List<T> listByField(String fieldName, Object value);//根據(jù)字段名查詢對象列表List<T> listByField(String fieldName1, Object value1, String fieldName2, Collection value2);//根據(jù)字段名查詢對象列表List<T> listByField(String fieldName1, Object value1, String fieldName2, Object value2);//表名String getTableName();//id值ID getIdValue(T entity);//id屬性名String getIdAttribute();//id列名String getIdColumn();//刪除void deleteAll(Collection<ID> ids);//mongo操作對象MongoOperations getMongoOperations();//實(shí)體定義MongoEntityInformation<T, ID> getEntityInformation();//實(shí)體類Class<T> getEntityClass();//id類Class<ID> getIdClass();//mongo轉(zhuǎn)換對象default MongoConverter getMongoConverter(){return getMongoOperations().getConverter();}//實(shí)例類base對象BaseRepository<T, ID> _baseThis();//查詢數(shù)據(jù)List<T> find(Query query);//計(jì)算數(shù)量long count(Query query);//查詢?nèi)ブ刈侄?lt;F> List<F> findDistinct(Query query, String field, Class<F> clazz);//聚合<F> AggregationResults<F> aggregate(Aggregation aggregation, Class<F> clazz); } package com.mk.mongodb.repository;import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.data.mongodb.repository.support.SimpleMongoRepository; import java.util.Collection; import java.util.LinkedList; import java.util.List;public class BaseRepository<T, ID> extends SimpleMongoRepository<T, ID> implements IBaseRepository<T, ID> {protected final MongoOperations mongoOperations;protected final MongoEntityInformation<T, ID> entityInformation;public BaseRepository(MongoEntityInformation<T, ID> metadata, MongoOperations mongoOperations) {super(metadata, mongoOperations);this.mongoOperations = mongoOperations;this.entityInformation = metadata;}@Overridepublic T find(ID id) {return findById(id).orElse(null);}@Overridepublic T findOne(Criteria criteria) {Query query = new Query(criteria);return this.mongoOperations.findOne(query, getEntityClass(), getTableName());}@Overridepublic List<ID> findIdsByQuery(Query query) {return this.mongoOperations.findDistinct(query, this.getIdColumn(), getTableName(), getIdClass());}@Overridepublic List<T> listAll() {return this.mongoOperations.findAll(getEntityClass(), getTableName());}@Overridepublic List<T> listByIds(Collection<ID> ids) {Iterable<T> iterable = findAllById(ids);if(iterable instanceof List){return (List<T>) iterable;}List<T> list = new LinkedList<>();iterable.forEach(list::add);return list;}@Overridepublic List<T> listByField(String fieldName, Collection values) {Criteria criteria = new Criteria();criteria.and(fieldName).in(values);Query query = new Query(criteria);List<T> list = this.find(query);return list;}@Overridepublic List<T> listByField(String fieldName, Object value) {Criteria criteria = new Criteria();criteria.and(fieldName).is(value);Query query = new Query(criteria);List<T> list = this.find(query);return list;}@Overridepublic List<T> listByField(String fieldName1, Object value1, String fieldName2, Collection value2) {Criteria criteria = new Criteria();criteria.and(fieldName1).is(value1).and(fieldName2).in(value2);Query query = new Query(criteria);List<T> list = this.find(query);return list;}@Overridepublic List<T> listByField(String fieldName1, Object value1, String fieldName2, Object value2) {Criteria criteria = new Criteria();criteria.and(fieldName1).is(value1).and(fieldName2).is(value2);Query query = new Query(criteria);List<T> list = this.find(query);return list;}@Overridepublic String getTableName(){return entityInformation.getCollectionName();}@Overridepublic ID getIdValue(T entity){return entityInformation.getId(entity);}@Overridepublic String getIdAttribute(){return entityInformation.getIdAttribute();}@Overridepublic String getIdColumn(){return "_id";}@Overridepublic void deleteAll(Collection<ID> ids) {Criteria criteria = Criteria.where(this.getIdColumn()).in(ids);Query query = new Query(criteria);mongoOperations.remove(query, getTableName());}@Overridepublic MongoOperations getMongoOperations() {return mongoOperations;}@Overridepublic MongoEntityInformation<T, ID> getEntityInformation() {return entityInformation;}@Overridepublic Class<T> getEntityClass() {return entityInformation.getJavaType();}@Overridepublic Class<ID> getIdClass() {return entityInformation.getIdType();}@Overridepublic BaseRepository<T, ID> _baseThis() {return this;}@Overridepublic List<T> find(Query query) {return this.mongoOperations.find(query, getEntityClass(), getTableName());}@Overridepublic long count(Query query) {return this.mongoOperations.count(query, getTableName());}@Overridepublic <F> List<F> findDistinct(Query query, String field, Class<F> clazz) {return this.mongoOperations.findDistinct(query, field, getTableName(), clazz);}@Overridepublic <F> AggregationResults<F> aggregate(Aggregation aggregation, Class<F> clazz) {return this.mongoOperations.aggregate(aggregation, getTableName(), clazz);}}?
二、Repository繼承新基類
package com.mk.mongodb.entity;import org.bson.types.ObjectId; import org.springframework.data.annotation.Id;public class Config {@Idprivate ObjectId id;private String value;public ObjectId getId() {return id;}public void setId(ObjectId id) {this.id = id;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}} package com.mk.mongodb.repository;package com.mk.mongodb.entity.Config; import org.bson.types.ObjectId;@Repository public interface ConfigRepository extends IBaseRepository<Config, ObjectId> {}?
三、配置MongoDB默認(rèn)基類
package com.mk;import com.mk.mongodb.repository.BaseRepository; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;@SpringBootApplication @EnableMongoRepositories(repositoryBaseClass = BaseRepository.class) public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}數(shù)據(jù)庫配置?
spring:data:mongodb:uri: mongodb://username:password@192.168.1.2:40001,192.168.1.3:40001/configDb?
總結(jié)
以上是生活随笔為你收集整理的Spring Data之MongoDB配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何快速复制指定的文件到指定的文件夹电脑
- 下一篇: gradle idea java ssm