spring boot集成mongodb的增删改查的示例代码

下面是详细的攻略:

一、环境搭建

  1. mongodb官网下载并安装mongodb数据库,并启动mongodb服务
  2. 在IDE中新建一个Spring Boot项目,根据需求添加相应依赖:
  3. spring-boot-starter-data-mongodb:用于集成mongodb数据库
  4. spring-boot-starter-web:用于实现RESTful风格的接口
  5. spring-boot-starter-test:用于进行单元测试

二、编写示例代码

1. 定义实体类

在src/main/java目录下新建一个实体类,例如User:

public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    // 省略getter和setter方法
}

其中@Id是mongodb中的注解,用于标识主键。

2. 编写DAO层

在src/main/java目录下新建一个repository包,然后在该包中新建一个UserRepository接口,继承MongoRepository:

public interface UserRepository extends MongoRepository<User, String> {
}

MongoRepository已经提供了很多常用的数据库操作,例如增删改查等。

3. 编写服务层

在src/main/java目录下新建一个service包,然后在该包中新建一个UserService接口和实现类UserServiceImpl。

UserService中定义了一些基本的增删改查操作:

public interface UserService {
    User saveUser(User user);
    void deleteUser(String id);
    User updateUser(User user);
    User findUserById(String id);
    List<User> findAllUser();
}

UserServiceImpl实现UserService中的方法,并依赖于UserRepository:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

    @Override
    public User saveUser(User user) {
        return userRepository.save(user);
    }

    @Override
    public void deleteUser(String id) {
        userRepository.deleteById(id);
    }

    @Override
    public User updateUser(User user) {
        return userRepository.save(user);
    }

    @Override
    public User findUserById(String id) {
        return userRepository.findById(id).orElse(null);
    }

    @Override
    public List<User> findAllUser() {
        return userRepository.findAll();
    }
}

4. 编写控制器

在src/main/java目录下新建一个controller包,然后在该包中新建一个UserController,用于处理用户请求:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.saveUser(user);
        return "success";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable String id) {
        userService.deleteUser(id);
        return "success";
    }

    @PutMapping
    public String updateUser(@RequestBody User user) {
        userService.updateUser(user);
        return "success";
    }

    @GetMapping("/{id}")
    public User findUserById(@PathVariable String id) {
        return userService.findUserById(id);
    }

    @GetMapping
    public List<User> findAllUser() {
        return userService.findAllUser();
    }
}

其中@RequestBody和@PathVariable注解都是用于从请求中获取参数的。

5. 编写单元测试

在src/test/java目录下新建一个test包,然后在该包中编写单元测试,用于对UserService中的方法进行测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void testSaveUser() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        User result = userService.saveUser(user);
        Assert.assertNotNull(result.getId());
    }

    @Test
    public void testDeleteUser() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        User result = userService.saveUser(user);
        userService.deleteUser(result.getId());
        User deletedUser = userService.findUserById(result.getId());
        Assert.assertNull(deletedUser);
    }

    @Test
    public void testUpdateUser() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        User result = userService.saveUser(user);
        result.setName("李四");
        result.setAge(30);
        User updatedUser = userService.updateUser(result);
        Assert.assertEquals("李四", updatedUser.getName());
        Assert.assertEquals(30, updatedUser.getAge().intValue());
    }

    @Test
    public void testFindUserById() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        User result = userService.saveUser(user);
        User foundUser = userService.findUserById(result.getId());
        Assert.assertEquals("张三", foundUser.getName());
    }

    @Test
    public void testFindAllUser() {
        User user1 = new User();
        user1.setName("张三");
        user1.setAge(20);
        userService.saveUser(user1);

        User user2 = new User();
        user2.setName("李四");
        user2.setAge(30);
        userService.saveUser(user2);

        List<User> userList = userService.findAllUser();
        Assert.assertEquals(2, userList.size());
    }
}

三、运行应用程序

  1. 启动Spring Boot应用程序
  2. 使用Postman等工具测试接口,例如:

  3. POST请求,请求参数为:

{
    "name": "zhangsan",
    "age": 18
}
  • PUT请求,请求参数为:
{
    "id": "5e32df4208fcab719cb8d7f8",
    "name": "lisi",
    "age": 20
}
  • GET请求,返回值为:
{
    "id": "5e32df4208fcab719cb8d7f8",
    "name": "lisi",
    "age": 20
}
  • DELETE请求,请求参数为:
/user/5e32df4208fcab719cb8d7f8

四、总结

以上就是在Spring Boot中集成mongodb实现增删改查的示例代码。在编写项目时,需要注意一些细节,例如MongoRepository的泛型参数和mongodb数据库的连接配置等。通过这个示例,相信大家已经掌握了Spring Boot集成mongodb的基本思路和方法,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot集成mongodb的增删改查的示例代码 - Python技术站

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

相关文章

  • MongoDB 查询操作的实例详解

    MongoDB 查询操作的实例详解 MongoDB 是一种流行的 NoSQL 数据库,它具有灵活和强大的查询功能。本文将介绍 MongoDB 中一些常用的查询操作,并提供几个实例来帮助理解。 查询所有文档 要查询集合中所有的文档,可以使用 find() 方法。以下是一个查询所有文档的示例: db.collection.find() 该命令将返回集合中的所有文…

    MongoDB 2023年5月16日
    00
  • C#基于Mongo的官方驱动手撸一个Super简易版MongoDB-ORM框架

    以下是详细讲解“C#基于Mongo的官方驱动手撸一个Super简易版MongoDB-ORM框架”的完整攻略,包含两条示例说明。 1.准备工作 1.1 安装MongoDB数据库 首先,在本地电脑上安装MongoDB数据库,可以去MongoDB官网下载,也可以使用yum/apt-get等命令行工具安装。安装完成后,启动MongoDB,可以使用mongo命令进行连…

    MongoDB 2023年5月16日
    00
  • 在php7中MongoDB实现模糊查询的方法详解

    下面我为你详细讲解在PHP7中MongoDB实现模糊查询的方法。 1. 安装MongoDB扩展 首先,确保已经安装MongoDB扩展。可以通过以下命令行安装: pecl install mongodb 完成安装后,在php.ini文件中加入以下配置: extension=mongodb.so 2. 连接MongoDB 接下来,使用MongoDB PHP库,连…

    MongoDB 2023年5月16日
    00
  • 在.Net中使用MongoDB的方法教程

    下面是详细讲解如何在.NET中使用MongoDB的方法教程: 一、安装MongoDB驱动程序 在.NET项目中使用MongoDB,首先需要安装MongoDB驱动程序。可以通过NuGet包管理器在Visual Studio中安装驱动程序。具体步骤如下: 在Visual Studio 中打开项目,并在项目中右键单击“引用”选择“管理NuGet程序包”。 在NuG…

    MongoDB 2023年5月16日
    00
  • 开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库(推荐)

    开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库(推荐) 如今,数据库已经成为了开发中非常重要的一部分,各种数据库的应用也越来越广泛。而在使用数据库的过程中,除了使用命令行管理工具,也有很多 GUI 工具可供选择。在这里,我们推荐了 5 款超好用的开源数据库 GUI 工具,包含 MongoDB、Redis、SQL 数据…

    MongoDB 2023年5月16日
    00
  • 阿里云服务器部署mongodb的详细过程

    下面是阿里云服务器部署MongoDB的详细过程: 准备工作 1.购买云服务器 首先需要在阿里云官网购买一台云服务器,可以根据需求选择不同的配置。例如可以选择CentOS 7.6系统。 2.打开服务器端口 默认情况下,阿里云服务器可能会禁止所有端口的访问,所以需要打开相应端口。在阿里云服务器控制台中选择安全组,点击进入相应安全组,然后在右侧的操作栏中选择添加安…

    MongoDB 2023年5月16日
    00
  • Python中MySQL数据迁移到MongoDB脚本的方法

    下面是Python中MySQL数据迁移到MongoDB脚本的详细攻略,包含两条示例说明: 准备工作 安装MySQL和MongoDB数据库 安装Python的依赖包pymongo和pymysql pip install pymongo pymysql 数据库连接 在Python中连接MySQL和MongoDB数据库的方法如下: import pymysql i…

    MongoDB 2023年5月16日
    00
  • Python 操作 MongoDB数据库的方法(非 ODM)

    标题:Python 操作 MongoDB数据库的方法(非 ODM)完整攻略 1. 安装 pymongo 库 在 Python 中操作 MongoDB,需要使用 pymongo 库。使用 pip 命令安装: pip install pymongo 2. 连接 MongoDB 数据库 在连接 MongoDB 数据库时,需要使用 MongoClient 类。根据 …

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部