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之前,需要先准备好以下环境: 安装MongoDB:可在MongoDB官网下载安装包并进行安装 配置环境变量:将MongoDB的bin目录添加至环境变量中 启动MongoDB MongoDB的启动方法有很多,以下是常用的几种方法: 方法一:使用mongod命令启动 mongo…

    MongoDB 2023年5月16日
    00
  • MongoDB查询与游标之分布式文件存储

    MongoDB是一个支持大规模数据存储的非关系型数据库,拥有良好的查询性能。本文主要介绍如何使用MongoDB进行分布式文件存储,并说明查询及游标的相关内容。 分布式文件存储 MongoDB支持分布式文件存储,这使得MongoDB可以存储大量的二进制数据。 GridFS GridFS是MongoDB的一种用于存储和检索大文件的协议。 GridFS有两个集合。…

    MongoDB 2023年5月16日
    00
  • Python简单连接MongoDB数据库的方法

    连接MongoDB数据库是Python开发的一个基本功,本文将介绍如何使用Python连接MongoDB数据库,并给出两个代码示例来说明。 步骤一:安装pymongo模块 pymongo是Python操作MongoDB数据库的第三方库,首先需要安装该模块。可以使用pip安装: pip install pymongo 步骤二:连接MongoDB数据库 连接Mo…

    MongoDB 2023年5月16日
    00
  • MongoDB连接数据库并创建数据等使用方法

    下面是关于MongoDB连接数据库并创建数据等使用方法的完整攻略,包含了两个示例说明。 连接MongoDB 在使用MongoDB之前,首先需要连接MongoDB。在Node.js中,我们可以使用第三方库mongoose来连接MongoDB。具体步骤如下: 安装mongoose包 npm install mongoose –save 引入mongoose包 …

    MongoDB 2023年5月16日
    00
  • 关于NoSQL之MongoDB的一些总结

    关于NoSQL之MongoDB的一些总结 什么是NoSQL? NoSQL是“Not only SQL”的缩写,表示非关系型数据库,它不像传统的关系型数据库(SQL)那样有严格的表结构和数据类型限制,相对灵活。 MongoDB是什么? MongoDB是一款比较流行的NoSQL数据库,它是一种文档存储数据库,可以存储各种复杂的文档类型,并且支持分布式部署。 Mo…

    MongoDB 2023年5月16日
    00
  • 基于linux命令提取文件夹内特定文件路径

    下面是基于Linux命令提取文件夹内特定文件路径的完整攻略,包含两条示例说明。 目录 前言 基础命令 示例操作1:查找所有的txt文件 示例操作2:查找所有的图片文件 总结 前言 在编写网站或开发其他软件的过程中,你可能会需要查找某个文件夹里特定类型的文件,并将这些文件的路径一一列出来。Linux提供了许多命令,可以实现这些任务。本篇攻略将讲解如何使用常见的…

    MongoDB 2023年5月16日
    00
  • Ubuntu环境下mongodb安装配置详细步骤

    下面是“Ubuntu环境下mongodb安装配置详细步骤”的完整攻略,其中包含两条示例说明。 安装mongodb 1. 添加mongodb官方apt源 打开终端,输入以下命令: sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv EA312927 echo "deb h…

    MongoDB 2023年5月16日
    00
  • MongoDB自动删除过期数据的方法(TTL索引)

    MongoDB自动删除过期数据的方法,是通过创建TTL索引的方式实现的。TTL(Time-To-Live)索引是一种特殊的索引,它会在一定的时间(由用户设置)过后删除已经失效的文档。下面我将详细讲解TTL索引的创建和使用过程,并提供两个示例说明。 创建TTL索引 TTL索引可以用于任何一个字段,但是通常使用类似于日期时间这样的字段。要创建一个TTL索引,需要…

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