注册

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 {
}

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 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 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 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 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的基本思路和方法,希望对大家有所帮助。