MongoDB介绍

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON
对象。字段值可以包含其他文档,数组及文档数组。

项目结构

在这里插入图片描述

具体配置

1、pom文件

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

2、yml配置文件

spring:
  data:
    mongodb:
      uri: mongodb://146.56.248.207:27017/mongo

3、实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
 * mongodb实体类
 * @author 流星
 */
@Data
@AllArgsConstructor
public class User {
    @Id
    private Long id;
    private String name;
    private String remark;
}

4、mapper类

import com.mongo1.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
/**
 * 类似mybatis-plus,实现快捷数据操作
 * 这个接口里面的方法都是自定义的
 * 使用的时候直接在service层调用方法就可以了
 * @author 流星
 */
@Repository
public interface MongoDBMapper extends MongoRepository<User,Long> {
    /**
     * 根据name差信息
     */
    User findByName(String name);
    /**
     * 根据remark差信息
     */
    User findByRemark(String remark);
}

5、config文件

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

/**
 * 去掉mongodb中collection的_class属性
 * @author 流星
 */
@Configuration
public class MongoMappingConfig {
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory,
                                                       MongoMappingContext context, BeanFactory beanFactory) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, context);
        try {
            converter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
        } catch (Exception e) {
            e.printStackTrace();
        }
        //don't save column _class to mongo collection
        converter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return converter;
    }
}

6、controller层

import com.mongo1.entity.User;
import com.mongo1.service.MongoDBService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * description controller层,测试类
 *
 * @author 流星
 * @date 2022/4/26 16:38
 */
@RestController
@RequestMapping
public class MainController {
    @Resource
    private MongoDBService mongoDBService;

    @RequestMapping("insert")
    public String insertUser(User user){
        mongoDBService.insertUser(user);
        return "success";
    }
    @RequestMapping("findByName")
    public Object findByName(String name){
        return mongoDBService.findByName(name);
    }
}

7、service接口

public interface MongoDBService{
    /**
     * 插入数据
     */
    void insertUser(User user);
        /**
     * 根据name查信息
     */
    Object findByName(String name);
}

8、service实现层

import com.mongo1.entity.User;
import com.mongo1.mapper.MongoDBMapper;
import com.mongo1.service.MongoDBService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

/**
 * description service层
 *
 * @author 流星
 * @date 2022/4/26 22:08
 */
@Slf4j
@Service
public class MongoDBServiceImpl implements MongoDBService {
    @Resource
    private MongoDBMapper mongoDBMapper;

    @Override
    public void insertUser(User user) {
        mongoDBMapper.save(user);
    }

    @Override
    public Object findByName(String name) {
        return mongoDBMapper.findByName(name);
    }
}

测试结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐