Java springboot Mongodb增删改查代码实例

我来为你详细讲解“Java SpringBoot MongoDB增删改查代码实例”的完整攻略。

简介

SpringBoot是一个基于Spring Framework的全栈( Full-stack)框架,可以快速构建Web应用程序。它提供了一系列的依赖管理和编码规范,使得我们可以专注于业务逻辑而不是繁琐的配置。MongoDB是一种文档数据库,支持各种数据类型和查询方式。

本攻略旨在介绍如何使用Java SpringBoot框架和MongoDB进行增删改查。

环境搭建

在开始本攻略之前,我们需要进行一些准备工作。

  • 安装 JDK 8 或以上版本。
  • 安装 MongoDB 数据库服务,详见MongoDB官网
  • 安装 MongoDB可视化管理工具 MongoDB Compass。
  • 新建Maven项目并导入MongoDB和SpringBoot相关依赖。

在项目的pom.xml文件中添加如下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.1.1</version>
</dependency>

实现增删改查

定义实体类

在开始实现增删改查之前,我们需要定义一个数据模型,即Java实体类。本文提供的示例代码中,我们定义一个名为Employee的实体类。

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Employee")
public class Employee {
    @Id
    private String id;
    private String firstName;
    private String lastName;
    private Long salary;
}

数据库连接

接下来我们需要建立与MongoDB的连接。在SpringBoot中,我们可以通过在application.properties文件中配置数据库连接信息来实现连接。

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=test_database

增加文档

下面是向MongoDB中添加一个文档的示例代码:

@Autowired
private MongoTemplate mongoTemplate;

public Employee addEmployee(Employee employee) {
    return mongoTemplate.save(employee);
}

查询文档

下面是从MongoDB中查询文档的示例代码:

@Autowired
private MongoTemplate mongoTemplate;

public List<Employee> findAllEmployees() {
    return mongoTemplate.findAll(Employee.class);
}

public Employee findEmployeeById(String id) {
    Query query = new Query(Criteria.where("id").is(id));
    return mongoTemplate.findOne(query, Employee.class);
}

public List<Employee> findEmployeeByLastName(String lastName) {
    Query query = new Query(Criteria.where("lastName").is(lastName));
    return mongoTemplate.find(query, Employee.class);
}

更新文档

下面是更新MongoDB中的文档的示例代码:

@Autowired
private MongoTemplate mongoTemplate;

public long updateEmployee(Employee employee) {
    Query query = new Query(Criteria.where("id").is(employee.getId()));

    Update update = new Update();
    update.set("firstName", employee.getFirstName());
    update.set("lastName", employee.getLastName());
    update.set("salary", employee.getSalary());

    UpdateResult result = mongoTemplate.updateFirst(query, update, Employee.class);

    if (result != null) {
        return result.getModifiedCount();
    } else {
        return 0L;
    }
}

删除文档

最后,我们需要删除MongoDB中的一个文档。下面是一个示例代码:

@Autowired
private MongoTemplate mongoTemplate;

public void deleteEmployeeById(String id) {
    Query query = new Query(Criteria.where("id").is(id));
    mongoTemplate.remove(query, Employee.class);
}

示例

下面是根据上述代码实现的两个示例。

示例1

在这个示例中,我们以RESTful API方式将一个员工进行添加、查询、更新和删除操作。

在EmployeeController.java中实现如下代码:

@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    // Get all employees
    @GetMapping("/getAllEmployees")
    public List<Employee> getAllEmployees() {
        return employeeService.findAllEmployees();
    }

    // Get an employee by id
    @GetMapping("/getEmployeeById/{id}")
    public Employee getEmployeeById(@PathVariable String id) {
        return employeeService.findEmployeeById(id);
    }

    // Get employees by lastName
    @GetMapping("/getEmployeesByLastName/{lastName}")
    public List<Employee> getEmployeesByLastName(@PathVariable String lastName) {
        return employeeService.findEmployeeByLastName(lastName);
    }

    // Add an employee
    @PostMapping("/addEmployee")
    public Employee addEmployee(@RequestBody Employee employee) {
        return employeeService.addEmployee(employee);
    }

    // Update an employee
    @PutMapping("/updateEmployee")
    public long updateEmployee(@RequestBody Employee employee) {
        return employeeService.updateEmployee(employee);
    }

    // Delete an employee
    @DeleteMapping("/deleteEmployeeById/{id}")
    public void deleteEmployeeById(@PathVariable String id) {
        employeeService.deleteEmployeeById(id);
    }
}

示例2

在这个示例中,我们以MongoTemplate方式进行文档操作,实现将一个员工添加进MongoDB数据库、查询、更新和删除操作。示例代码如下:

@SpringBootApplication
public class MongoDemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(MongoDemoApplication.class, args);

        EmployeeService employeeService = context.getBean(EmployeeService.class);

        // 添加Employee
        Employee employee = new Employee(null, "Jack", "Smith", 80000L);
        Employee addedEmployee = employeeService.addEmployee(employee);
        System.out.println("Added employee: " + addedEmployee);

        // 根据ID查询Employee
        String addedEmployeeId = addedEmployee.getId();
        Employee foundEmployee = employeeService.findEmployeeById(addedEmployeeId);
        System.out.println("Found employee by ID: " + foundEmployee);

        // 根据lastName查询Employee
        List<Employee> foundEmployeesByLastName = employeeService.findEmployeeByLastName("Smith");
        System.out.println("Found employees by lastName: " + foundEmployeesByLastName);

        // 更新Employee
        Employee updatedEmployee = foundEmployee;
        updatedEmployee.setSalary(90000L);
        long updatedCount = employeeService.updateEmployee(updatedEmployee);
        System.out.println("Updated employee count: " + updatedCount);

        // 删除Employee
        String updatedEmployeeId = updatedEmployee.getId();
        employeeService.deleteEmployeeById(updatedEmployeeId);
        System.out.println("Deleted employee by ID: " + updatedEmployeeId);
    }
}

至此,我们已经实现了Java SpringBoot MongoDB的增删改查。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java springboot Mongodb增删改查代码实例 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • OpenCV连通域数量统计学习示例

    让我来详细讲解一下 “OpenCV连通域数量统计学习示例” 的完整攻略。 概述 “OpenCV连通域数量统计学习示例” 是一个通过 OpenCV 库实现的图像处理程序。该程序可以统计一张图片中连通域的数量,并将其展示在屏幕上。本篇攻略将详细介绍该程序的实现过程。 步骤 以下是实现该程序的步骤: 步骤一:导入 OpenCV 库 首先,我们需要导入 cv2 模块…

    人工智能概论 2023年5月25日
    00
  • EVGA GeForce GTX 1060 FTW+GAMING显卡评测和拆解图

    EVGA GeForce GTX 1060 FTW+GAMING显卡评测和拆解图 EVGA GeForce GTX 1060 FTW+GAMING显卡是一款高性能显卡,下面我们将给出它的评测和拆解图。 性能测试 我们使用以下测试平台进行了测试: CPU: Intel Core i7-8700K 内存: 16GB DDR4 显示器: ASUS VG279Q 在…

    人工智能概览 2023年5月25日
    00
  • Flask模拟实现CSRF攻击的方法

    针对”Flask模拟实现CSRF攻击的方法”,我们将分别从攻击者的角度和服务器开发者的角度来讲解。 从攻击者的角度 在进行 CSRF 攻击之前,我们需要先了解攻击原理。CSRF 攻击是一种通过伪装成已经登录的用户来执行非法操作的攻击。攻击者利用受害者已经登录的凭证,欺骗服务器执行 CSRF 请求,常见的攻击方式有以下两种。 1. 嵌入图片的攻击方式 攻击者通…

    人工智能概论 2023年5月25日
    00
  • 利用Nginx代理如何解决前端跨域问题详析

    下面是“利用Nginx代理如何解决前端跨域问题”的完整攻略。 一、什么是前端跨域问题 前端跨域是指在浏览器发送请求过程中,请求的目标url与当前页面的url不属于同一个域的情况。前端跨域是由于浏览器的同源策略导致的。同源策略要求:协议、域名、端口号必须全部相同。 在前端开发中,经常会出现跨域请求的场景。例如,前端需要从一个API服务器请求数据,但是这个API…

    人工智能概览 2023年5月25日
    00
  • Java基于FFmpeg实现Mp4视频转GIF

    下面提供一份“Java基于FFmpeg实现Mp4视频转GIF”的完整攻略,具体过程如下: 安装FFmpeg库 第一步是需要下载和安装FFmpeg库。FFmpeg是一个开源库,支持大多数主流平台上的音频和视频格式。可以从官网下载安装包,并按照官方文档安装。 如果你使用的是Linux操作系统,则可在终端中输入以下命令进行安装: sudo apt-get inst…

    人工智能概览 2023年5月25日
    00
  • python中重启for循环,使其重新开始遍历

    在Python中,我们可以通过一些技巧来重启一个for循环。以下是完整的攻略: 方式一:使用for-else循环 在Python中,for循环结合else语句可以实现重启for循环的功能。具体实现步骤如下: 在for循环结束后,添加else语句块。 在else语句块中,使用break语句退出当前循环。 在外部使用while循环,持续执行for循环,直到满足退…

    人工智能概论 2023年5月25日
    00
  • Python一键实现PDF文档批量转Word

    PDF文档是常用的文档格式,但有时候需要将PDF转换为Word文档以便于修改和编辑。本文将介绍如何使用Python的pdf2docx库实现PDF文档批量转换为Word文档的功能。 准备工作 首先需要安装pdf2docx库,可以使用pip命令进行安装: pip install pdf2docx 使用示例 以下是两个示例,演示如何使用pdf2docx库进行PDF…

    人工智能概论 2023年5月25日
    00
  • C++ OpenCV模拟实现微信跳一跳

    C++ OpenCV模拟实现微信跳一跳的完整攻略如下所示: 1. 简介 微信跳一跳是一款非常受欢迎的小游戏,本文将介绍如何使用C++和OpenCV模拟实现微信跳一跳。 2. 实现步骤 2.1. 准备工作 在开始实现之前,我们需要进行一些准备工作: 安装OpenCV和C++编译器。 下载微信跳一跳游戏。 使用Android手机进行游戏,并且将游戏跳一跳的画面通…

    人工智能概论 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部