下面是详细的攻略:
一、环境搭建
- 在mongodb官网下载并安装mongodb数据库,并启动mongodb服务
- 在IDE中新建一个Spring Boot项目,根据需求添加相应依赖:
- spring-boot-starter-data-mongodb:用于集成mongodb数据库
- spring-boot-starter-web:用于实现RESTful风格的接口
- 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());
}
}
三、运行应用程序
- 启动Spring Boot应用程序
-
使用Postman等工具测试接口,例如:
-
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技术站