Spring Data之MongoDB配置

一、重写基类扩展功能

package com.mk.mongodb.repository;

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.repository.NoRepositoryBean;

@NoRepositoryBean
public interface IBaseRepository<T, ID> extends MongoRepository<T, ID> {

    String getTableName();

    MongoOperations getMongoOperations();

    MongoEntityInformation<T, ID> getEntityInformation();

    Class<T> getEntityClass();

    Class<ID> getIdClass();
}
package com.mk.mongodb.repository;
import org.springframework.data.mongodb.core.MongoOperations;
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;


public class BaseRepository<T, ID> extends SimpleMongoRepository<T, ID> implements IBaseRepository<T, ID> {

    private final MongoOperations mongoOperations;
    private final MongoEntityInformation<T, ID> entityInformation;

    public BaseRepository(MongoEntityInformation<T, ID> metadata, MongoOperations mongoOperations) {
        super(metadata, mongoOperations);
        this.mongoOperations = mongoOperations;
        this.entityInformation = metadata;
    }

    @Override
    public String getTableName(){
        return entityInformation.getCollectionName();
    }


    @Override
    public MongoOperations getMongoOperations() {
        return mongoOperations;
    }

    @Override
    public MongoEntityInformation<T, ID> getEntityInformation() {
        return entityInformation;
    }

    @Override
    public Class<T> getEntityClass() {
        return entityInformation.getJavaType();
    }

    @Override
    public Class<ID> getIdClass() {
        return entityInformation.getIdType();
    }
}

二、Repository继承新基类

package com.mk.mongodb.entity;

import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;

public class Config {
    @Id
    private 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默认基类

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);
	}

}

数据库配置 

spring:
   data:
      mongodb:
        uri: mongodb://username:[email protected]:40001,192.168.1.3:40001/configDb
发布了354 篇原创文章 · 获赞 522 · 访问量 128万+

猜你喜欢

转载自blog.csdn.net/moakun/article/details/103547630