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

yizhihongxing

下面是详细的攻略:

一、环境搭建

  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日

相关文章

  • Spring Boot(五)之跨域、自定义查询及分页

    下面我将详细讲解“Spring Boot(五)之跨域、自定义查询及分页”完整攻略。 跨域 跨域是指浏览器的安全策略限制了网页从当前源访问另一个源的内容。在 Spring Boot 中,我们可以使用 CorsFilter 实现跨域请求。 首先需要在 pom.xml 中添加依赖: <dependency> <groupId>org.spr…

    MongoDB 2023年5月16日
    00
  • mongodb中oplog介绍和格式详析

    下面我会详细讲解“MongoDB中Oplog介绍和格式详析”的完整攻略,包括什么是Oplog、Oplog的格式详解以及两个Oplog示例说明。 什么是Oplog? Oplog(操作日志)是MongoDB的一项特性,用于记录MongoDB数据中的所有操作。Oplog是一个特殊集合,也是复制集中的必须组件。使用Oplog,可以进行MongoDB的数据副本集和分片…

    MongoDB 2023年5月16日
    00
  • 详解Python操作MongoDB的方法

    安装MongoDB MongoDB的安装很简单,只需要在官网选择对应的操作系统,下载安装包,然后进行安装即可。 安装Python的MongoDB驱动包pymongo 在命令行窗口输入以下命令来安装pymongo包: pip install pymongo 连接MongoDB数据库 Python通过pymongo包来操作MongoDB数据库,连接的方法如下所示…

    MongoDB 2023年3月14日
    00
  • MongoDB可视化工具mongodb-compass

    下面是MongoDB可视化工具mongodb-compass的完整攻略。 MongoDB可视化工具mongodb-compass 什么是mongodb-compass MongoDB Compass是一个可视化管理MongoDB的工具。它提供了一个直观的图形界面,方便你对MongoDB数据库进行操作、管理和查询。MongoDB Compass具有以下特点: …

    MongoDB 2023年5月16日
    00
  • mongodb在建立一个T级别的数据库时,进程挂掉的解决方法

    建立一个T级别的数据库意味着创建一个在特定时间内可以执行特定任务的系统。MongoDB为开发人员提供了一个名为createIndex()的方法来创建索引。当然,还有很多其他的方法可以在MongoDB中使用来提高查询效率。但建立T级别的数据库时,进程偶尔会挂掉,这是可以采取一些措施来解决的。 以下是在建立一个T级别的数据库时进程挂掉的解决方法的攻略: 1.增加…

    MongoDB 2023年5月16日
    00
  • MongoDB索引类型汇总分享

    MongoDB索引类型汇总分享 索引类型介绍 MongoDB中支持多种类型的索引,包括: 单键索引:基于一个字段创建的索引。 复合索引:基于多个字段创建的索引。 多键索引:索引一个数组字段。 地理位置索引:用于地理位置数据的索引。 文本索引:用于文本数据的全文索引。 TTL索引:基于时间创建的索引,用于自动删除过期数据。 下面对这些索引类型进行详细介绍。 单…

    MongoDB 2023年5月16日
    00
  • MongoDB 事务支持详解

    MongoDB 事务支持详解 MongoDB 4.0版本开始支持了多文档事务,这是MongoDB一个重要的里程碑,意味着Mongodb可以用来存储具有ACID特性的关系型数据了。 事务的基本概念 事务是指一组数据库操作,它们被视为一个工作单元,要么全部执行成功,要么全部失败执行回滚。MongoDB中的事务遵循的是“all-or-nothing”的原则。 一个…

    MongoDB 2023年5月16日
    00
  • MongoDB删除文档方法详解

    删除单个文档 删除单个文档的最基本操作就是使用db.collection.remove()方法。该方法可以在一个集合中删除一个或多个文档。 首先,我们需要连接MongoDB并选定一个集合: // 连接MongoDB const MongoClient = require('mongodb').MongoClient; const uri …

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