• java练习生


    一、添加依赖

    <!--添加mongodb功能-->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>2.1.8.RELEASE</version>
    </dependency>
    <!--使用ConfigurationProperties注解为自定义的配置类赋值时需要添加该依赖,否则提示:spring boot configuration annotation processor not found in classpath-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    二、创建配置类

    2.1 添加连接配置信息(application.yml)

    mongodb: 
      database: mongodb://ttt:hzq@xxx1:27017,xxx2:27017,xxx3:27017/vts?authSource=admin
      uri: test

    2.2 创建配置参数类

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties(prefix = "mongodb")
    @Data
    public class MongoDbProperties {
        private String database;
        private String uri;
    }

    2.3 创建配置类

    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientURI;
    import hzq.maven.demo.config.properties.MongoDbProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.mongodb.MongoDbFactory;
    import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
    
    import javax.annotation.Resource;
    
    @Configuration
    @EnableConfigurationProperties(MongoDbProperties.class)
    public class MongoDbConfig extends AbstractMongoConfiguration {
    
        @Resource
        private MongoDbProperties mongoProperties;
    
        @Override
        @Bean
        public MongoTemplate mongoTemplate() throws Exception {
    
            return new MongoTemplate(mongoDbFactory());
        }
    
        @Override
        @Bean
        public MongoDbFactory mongoDbFactory() {
            MongoDbFactory dbFactory = new SimpleMongoDbFactory(mongoClient(), getDatabaseName());
            return dbFactory;
        }
    
        @Override
        public MongoClient mongoClient() {
            MongoClientURI uri = new MongoClientURI(this.mongoProperties.getUri());
            return new MongoClient(uri);
        }
    
        @Override
        protected String getDatabaseName() {
            return this.mongoProperties.getDatabase();
        }
    }
    View Code

    三、创建操作类

    3.1 接口

    import java.util.List;
    import java.util.Map;
    
    /**
     * mongo操作接口
     */
    public interface MongoService{
    
        /**
         * 保存到mongo
         * @param objectToSave 数据对象类型
         * @param aggregateName 集合名称
         */
        void save(Object objectToSave,String aggregateName);
    
        /**
         * 根据条件查询记录
         * @param condition 条件名称
         * @param value    条件值
         * @param     entityClass 对应实体类
         * @param aggregateName 集合名称
         * @return mongo记录
         */
        Object find(String condition, Object value ,Class<?> entityClass , String aggregateName);
    
        /**
         * 根据条件查询记录
         * @param conditionMap 条件集合
         * @param     entityClass 对应实体类
         * @param aggregateName 集合名称
         * @return mongo记录
         */
        Object findByMap(Map<String ,Object> conditionMap, Class<?> entityClass , String aggregateName);
    
        /**
         * 根据条件查询批量记录
         * @param condition 条件名称
         * @param value    条件值
         * @param     entityClass 对应实体类
         * @param aggregateName 集合名称
         * @return mongo记录
         */
        List<Object> findBatch(String condition, Object value ,Class<?> entityClass , String aggregateName);
    
        /**
         * 根据条件查询记录
         * @param conditionMap 条件集合
         * @param     entityClass 对应实体类
         * @param aggregateName 集合名称
         * @return mongo记录
         */
        List<Object> findBatchByMap(Map<String ,Object> conditionMap, Class<?> entityClass , String aggregateName);
    
    
        /**
         * 根据条件修改单条记录
         * @param condition 修改记录的查询条件
         *  @param    queryValue 查询条件过滤值
         * @param key        要修改的列名称
         * @param updateValue      修改的值
         * @param     entityClass 对应实体类
         * @param aggregateName 集合名称
         */
        void update(String condition,Object queryValue ,String key, Object updateValue,Class<?> entityClass, String aggregateName);
    
        /**
         *根据条件集合批量修改记录
         * @param conditionMap 条件集合
         * @param key  要修改的列
         * @param updateValue 修改的值
         * @param entityClass 对应实体类
         * @param aggregateName 集合名称
         */
        void updateByMap(Map<String ,Object> conditionMap,String key, Object updateValue,Class<?> entityClass, String aggregateName);
    }
    View Code

    3.2 实现

    import hzq.maven.demo.service.mongo.MongoService;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
    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 org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    import java.util.Map;
    
    /**
     * mongo操作实现
     */
    @ConditionalOnExpression("${mongodb.button:true}")
    @Service
    public class MongoServiceImpl implements MongoService {
        @Resource
        private MongoTemplate mongoTemplate;
    
        @Override
        public void save(Object objectToSave, String aggregateName) {
            mongoTemplate.save(objectToSave, aggregateName);
        }
    
        @Override
        public Object find(String condition, Object value, Class entityClass, String aggregateName) {
            Query query = new Query(Criteria.where(condition).is(value));
            return mongoTemplate.findOne(query, entityClass, aggregateName);
        }
    
        @Override
        public Object findByMap(Map conditionMap, Class entityClass, String aggregateName) {
            Query query = new Query();
            conditionMap.forEach(( k, v) -> query.addCriteria(Criteria.where(k.toString()).is(v)));
            return mongoTemplate.findOne(query, entityClass, aggregateName);
        }
    
        @Override
        public List findBatch(String condition, Object value, Class entityClass, String aggregateName) {
            Query query = new Query(Criteria.where(condition).is(value));
            return mongoTemplate.find(query, entityClass, aggregateName);
        }
    
        @Override
        public List findBatchByMap(Map conditionMap, Class entityClass, String aggregateName) {
            Query query = new Query();
            conditionMap.forEach(( k, v) -> query.addCriteria(Criteria.where(k.toString()).is(v)));
            return mongoTemplate.find(query, entityClass, aggregateName);
        }
    
        @Override
        public void update(String condition, Object queryValue, String key, Object updateValue, Class entityClass, String aggregateName) {
            Query query = new Query(Criteria.where(condition).is(queryValue));
            Update update = Update.update(key, updateValue);
            mongoTemplate.updateFirst(query, update, entityClass,aggregateName);
        }
    
        @Override
        public void updateByMap(Map conditionMap, String key, Object updateValue, Class entityClass, String aggregateName) {
            Query query = new Query();
            conditionMap.forEach(( k, v) -> query.addCriteria(Criteria.where(k.toString()).is(v)));
            Update update = Update.update(key, updateValue);
            mongoTemplate.updateMulti(query, update, entityClass,aggregateName);
        }
    }
    View Code

    四、使用

    @Resource
    private MongoTemplate mongoTemplate;
    
    public void mongoSet(TestDataDTO testDataDTO){
        mongoTemplate.save(testDataDTO,"TestData");
    }
  • 相关阅读:
    excel 合并
    百度百科-人物数据采集
    list 元素个数*10 生成一个新的list
    mongo 备份脚本
    python excel合并脚本
    java多线程之消费生产模型
    Lasso回归
    岭回归
    普通最小二乘法
    常问的MySQL面试题整理
  • 原文地址:https://www.cnblogs.com/ariter/p/14217878.html
Copyright © 2020-2023  润新知