Java springboot Mongodb增删改查代码实例

yizhihongxing

我来为你详细讲解“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日

相关文章

  • Windows Me光盘启动安装过程

    Windows Me光盘启动安装过程攻略 前置条件 在进行Windows Me光盘启动安装之前,你需要准备以下物品: Windows Me安装光盘 一台已安装好操作系统的电脑(可用于制作启动盘) 一张空白光盘或U盘(用于制作启动盘) 步骤一:制作启动盘 1.插入空白光盘或U盘 2.打开已安装好操作系统的电脑 3.将Windows Me启动光盘插入电脑 4.打…

    人工智能概览 2023年5月25日
    00
  • 10行Python代码计算汽车数量的实现方法

    下面是详细的解释和攻略。 1. 确定目标 根据题目需要计算汽车数量,我们需要明确以下几个目标: 计算出场景中汽车的数量。 使用Python语言编写计算代码。 代码行数不能超过10行。 2. 数据处理思路 我们可以通过对场景图片进行分析,得到汽车的轮廓信息,从而判断汽车的数量。在这里,我们使用OpenCV库进行图像处理,提取汽车轮廓。 3. 代码实现 根据目标…

    人工智能概论 2023年5月25日
    00
  • 如何用Python中19行代码把照片写入到Excel中

    我们可以使用Python的Pillow库读取图片,然后使用openpyxl库将图像写入Excel单元格。其中19行包括导入模块和定义函数等步骤,具体步骤如下: 1.导入Python的Pillow和openpyxl库。 from PIL import Image from openpyxl import Workbook 2.创建Excel文件和工作表对象。 …

    人工智能概论 2023年5月25日
    00
  • 用Python给二维码图片添加提示文字

    添加提示文字的思路: 要给二维码添加提示文字,需要先生成二维码图像,然后在图像上添加文字。Python中有很多库可以生成二维码图像,例如qrcode、pyqrcode等,这里以qrcode为例讲解。 qrcode库中的QRCode类可以生成二维码的矩阵数据,然后将矩阵转换成图片,最后使用Pillow库中的ImageDraw类向图片中添加文字。 示例1:生成一…

    人工智能概览 2023年5月25日
    00
  • linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结

    我来详细讲解一下“linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结”的完整攻略。 一、LVS、Nginx和HAProxy负载均衡器对比总结 1.1 介绍 负载平衡技术是指将多个服务器组成一个服务器集群,将用户请求分摊到不同的服务器上,从而达到提高系统可用性、增加系统负载能力的目的。其中,LVS、Nginx和HAProxy都是目前比较流行…

    人工智能概览 2023年5月25日
    00
  • 在类Unix系统上开始Python3编程入门

    下面是在类Unix系统上开始Python3编程入门的完整攻略: 1. 安装Python3 首先要保证系统中已经安装了Python3,如果没有,可以在命令行中输入以下命令来安装: sudo apt-get update sudo apt-get install python3 2. 安装pip pip是Python的包管理工具,可以通过它来安装第三方库,安装命…

    人工智能概览 2023年5月25日
    00
  • python生成验证码图片代码分享

    下面是“python生成验证码图片代码分享”的完整攻略。 1. 需求分析 我们需要实现一个Python程序,用于生成验证码图片。这个程序需要具备以下功能: 生成一段随机的英文字母和数字字符组合的字符串。 将生成的字符串渲染到一张图片上,并通过HTTP响应返回给用户。 2. 编写代码 2.1 安装依赖库 我们需要使用Pillow库来渲染图片,可以通过pip命令…

    人工智能概览 2023年5月25日
    00
  • python疲劳驾驶困倦低头检测功能的实现

    Python疲劳驾驶困倦低头检测功能的实现是一种人脸识别技术,它可以通过摄像头捕捉图像,识别人的面部特征,判断其是否疲劳、困倦或者低头,给出警报提醒,从而保障驾车安全。实现该功能的方法有很多种,以下是其中的一种攻略: 步骤一:安装必要的Python第三方库 要实现该功能需要使用到Python的第三方库,最重要的是OpenCV库和dlib库,需要先在Pytho…

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