使用springboot连接mongodb数据库并进行操作

本文主要指导以最简单的方式搭建一个以springboot整合swaggerUI并对mongodb数据库进行操作的demo,废话不对说,直接上流程:

1.创建springboot工程

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

2.添加swagger的pom依赖

在pom文件里面加上需要导入的jar包:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<!-- 接口API生成html文档 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.6.1</version>
</dependency>

3.添加mongodb数据库的连接配置项

直接在application.properties文件里面加上配置的ip,端口号和数据库名称,有账号密码的自行添加,配置成yml的可以自行修改文件

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=Test

4.创建包结构

在这里插入图片描述

5.编写代码

  • swagger的启动类:
package com.mongodb.demo.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class swaggerConfig {
    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2).select().
        	apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
    }
}

使用@Configuration标记这是一个启动类,需要被spring进行加载,使用@EnableSwagger2表示这是swagger的启动类

  • user实体类
package com.mongodb.demo.entity;

/**
 * <p>title:com.mongodb.demo.entity</p>
 * <p>Company:阿里巴巴</p>
 * author:及时雨
 * date:2019/9/1
 * version 1.0
 */

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

/**
 * 实体层
 * @author linhongcun
 *
 */
@Document(collection="t_user")
public class User {

    @Id // 指定ID
    private String id;

    @Field("userName") // 指定域名,覆盖默认
    private String userName;

    @Field("password") // 指定域名,覆盖默认
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}


@Document(collection=“t_user”)表名这个是一个文档对象,t_user就是你需要插入的collection(类似于表名),@Id 为id,不写会自动创建,@Field为键值对的key值

  • controller类,本来需要分层写的,这里为了简单直接一个写完
package com.mongodb.demo.controller;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.mongodb.demo.entity.User;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * 控制层
 * @author linhongcun
 *
 */
@RestController
@RequestMapping("/user")
@EnableSwagger2
public class UserController {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 1、增
     * @param user
     * @return
     */
    @PostMapping("/insert")
    @ApiOperation (value = "insert",notes = "插入")
    public User insertUser(User user) {
        // 可以用 save 替代
        mongoTemplate.insert(user);
        return user;
    }

    /**
     * 2、查
     * @param id
     * @return
     */
    @GetMapping("/get/{id}")
    @ApiOperation (value = "get",notes = "查询")
    public User getUserById(@PathVariable String id) {
        return mongoTemplate.findById(id, User.class);
    }

    /**
     * 3、删
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    @ApiOperation (value = "delete",notes = "删除")
    public User deleteUserById(@PathVariable String id) {
        User user = mongoTemplate.findById(id, User.class);
        mongoTemplate.remove(user);
        return user;
    }

    /**
     * 4、改
     * @param user
     * @return
     */
    @PutMapping("/update")
    @ApiOperation (value = "update",notes = "修改")
    public User updateUser(User user) {
        // save 可增可改!
        mongoTemplate.save(user);
        return user;
    }

    /**
     * 5、全
     * @return
     */
    @GetMapping("/get/all")
    @ApiOperation (value = "getAll",notes = "获取所有")
    public List<User> getAllUsers() {
        return mongoTemplate.findAll(User.class);
    }

    /**
     * 6、查 ++:属性、分页
     * @param user
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/select/{page}/{size}")
    @ApiOperation (value = "select",notes = "分页查询")
    public Map<String, Object> selectUserByProperty(User user, @PathVariable int page, @PathVariable int size) {

        // 条件
        Criteria criteria1 = Criteria.where("userName").is(user.getUserName());
        Criteria criteria2 = Criteria.where("password").is(user.getPassword());
        Query query = new Query();
        if (user.getUserName() != null) {
            query.addCriteria(criteria1);
        }
        if (user.getPassword() != null) {
            query.addCriteria(criteria2);
        }

        // 数量
        long total = mongoTemplate.count(query, User.class);

        // 分页
        query.skip((page - 1) * size).limit(size);

        List<User> data = mongoTemplate.find(query, User.class);
        Map<String, Object> map = new HashMap<String, Object>();

        map.put("data", data);
        map.put("total", total);

        return map;
    }
}


代码写完了,直接启动MongodbApplication这个启动类,打开swagger的网址进行测试(http://localhost:8080/swagger-ui.html#/):
在这里插入图片描述
插入数据:
在这里插入图片描述查看数据库:
在这里插入图片描述到这里,一个最简单的小demo就完成了.

### 使用Spring Boot连接MongoDB数据库 #### 配置`application.yml` 为了建立与MongoDB连接,在项目的`application.yml`文件中指定必要的配置参数。这些参数定义了主机地址、端口号以及目标数据库名称。 ```yaml spring: data: mongodb: host: localhost port: 27017 database: test ``` 此段代码展示了如何设置本地运行的MongoDB实例连接[^1]。 对于更复杂的场景,比如带有认证信息的情况,则可以采用如下方式: ```yaml spring: data: mongodb: uri: mongodb://username:password@localhost:27017/mydatabase database: mydatabase ``` 这里通过URI的形式提供了用户名和密码用于身份验证,指定了要访问的具体数据库[^4]。 #### 添加依赖项 为了让项目具备操作MongoDB的能力,需向构建工具(如Maven或Gradle)中的`pom.xml`或`build.gradle`添加相应的依赖条目。以下是基于Maven的一个例子: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 该依赖会自动导入所有必需的支持包以便于后续开发工作[^3]。 #### 创建实体类 接下来定义一个简单的Java POJO作为文档映射模型。假设有一个名为`User`的数据表/集合结构,那么对应的实体类可能看起来像这样: ```java import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // Getters and Setters... } ``` 上述代码片段创建了一个代表用户记录的对象,标注它属于`users`这个集合内。 #### 实现CRUD功能 最后一步就是编写业务逻辑层的服务接口和服务实现类来完成基本的操作。下面给出的是利用`MongoTemplate`执行查询的例子: ```java @Autowired private MongoTemplate mongoTemplate; public List<User> findAllUsers() { return mongoTemplate.findAll(User.class); } public void saveOrUpdateUser(User user) { mongoTemplate.save(user); } // 更多方法省略... ``` 这段程序说明了怎样借助框架提供的API来进行数据存取动作[^2]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值