spring data 连接mongodb的两种方式

以Spring Boot为例,连接MongoDB有两种主要方式:使用MongoTemplate或使用MongoRepository。

使用MongoTemplate

  1. 添加MongoDB和Spring Data MongoDB依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
</dependency>
  1. 在application.properties中添加数据库配置
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=yourusername
spring.data.mongodb.password=yourpassword
spring.data.mongodb.database=yourdbname
  1. 创建实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "users")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
}
  1. 创建MongoTemplate
@Configuration
public class MongoConfig {
    @Autowired
    private MongoClient mongoClient;

    @Bean
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoClient, "yourdbname");
    }
}
  1. 在service/dao层使用MongoTemplate
@Service
public class UserService {
    @Autowired
    private MongoTemplate mongoTemplate;

    public void saveUser(User user) {
        mongoTemplate.save(user);
    }

    public User getUser(String id) {
        Query query = Query.query(Criteria.where("_id").is(id));
        return mongoTemplate.findOne(query, User.class);
    }

    public void updateUser(User user) {
        Query query = Query.query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name", user.getName());
        update.set("age", user.getAge());
        mongoTemplate.updateFirst(query, update, User.class);
    }

    public void deleteUser(String id) {
        Query query = Query.query(Criteria.where("_id").is(id));
        mongoTemplate.remove(query, User.class);
    }
}

使用MongoRepository

  1. 添加MongoDB和Spring Data MongoDB依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
</dependency>
  1. 在application.properties中添加数据库配置
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=yourusername
spring.data.mongodb.password=yourpassword
spring.data.mongodb.database=yourdbname
  1. 创建实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "users")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
}
  1. 创建MongoRepository
public interface UserRepository extends MongoRepository<User, String> {
    User findByName(String name);
}
  1. 在service/dao层使用MongoRepository
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public void saveUser(User user) {
        userRepository.save(user);
    }

    public User getUser(String id) {
        return userRepository.findById(id).orElse(null);
    }

    public void updateUser(User user) {
        userRepository.save(user);
    }

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

以上就是使用MongoTemplate和MongoRepository两种方式连接MongoDB的完整攻略。

示例:实现一个简单的用户登录和注册功能

  1. 创建UserController,添加REST接口
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public String register(@RequestBody User user) {
        if (userService.getUserByName(user.getName()) != null) {
            return "用户名已存在";
        } else {
            userService.saveUser(user);
            return "注册成功";
        }
    }

    @PostMapping("/login")
    public String login(@RequestBody User user) {
        User foundUser = userService.getUserByName(user.getName());
        if (foundUser == null) {
            return "用户不存在";
        } else if (foundUser.getPassword().equals(user.getPassword())) {
            return "登录成功";
        } else {
            return "密码错误";
        }
    }
}
  1. 修改UserService,添加getUserByName方法
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public void saveUser(User user) {
        userRepository.save(user);
    }

    public User getUserById(String id) {
        return userRepository.findById(id).orElse(null);
    }

    public User getUserByName(String name) {
        return userRepository.findByName(name);
    }

    public void updateUser(User user) {
        userRepository.save(user);
    }

    public void deleteUser(String id) {
        userRepository.deleteById(id);
    }
}
  1. 修改User实体类,添加password属性
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "users")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String password;
}
  1. 注册新用户
POST /user/register HTTP/1.1
Content-Type: application/json

{
    "name": "test",
    "age": 18,
    "password": "123456"
}
  1. 登录已存在的用户
POST /user/login HTTP/1.1
Content-Type: application/json

{
    "name": "test",
    "password": "123456"
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring data 连接mongodb的两种方式 - Python技术站

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

相关文章

  • ASP .NET调用javascript中Response.Write和ClientScript.RegisterStartupScript的区别

    ASP .NET 是一种常用的 Web 应用程序框架,它提供了多种方式来调用 JavaScript,在其中,Response.Write 和 ClientScript.RegisterStartupScript 是两种常用的方式。在本次攻略中,我们将探讨它们的区别。 Response.Write Response.Write 是一种经典的将字符串或 HTML…

    MongoDB 2023年5月16日
    00
  • MongoDB连接和创建数据库的方法讲解

    下面是关于“MongoDB连接和创建数据库的方法讲解”的详细攻略。 连接MongoDB 步骤一:启动MongoDB服务 在连接MongoDB之前,首先需要启动MongoDB服务。如果您使用的是macOS或Linux系统,可以在终端输入以下命令来启动MongoDB服务: sudo service mongod start 如果您使用的是Windows系统,可以…

    MongoDB 2023年5月16日
    00
  • MongoDB安装图文教程

    下面我将为您详细讲解“MongoDB安装图文教程”的完整攻略,包含安装步骤和两个示例演示。 MongoDB安装图文教程 准备工作 在开始安装MongoDB之前,您需要做一些准备工作: 下载MongoDB:您可以在MongoDB官网上下载适用于您系统的安装包。 创建数据目录:MongoDB默认的数据目录是/data/db,您需要确保该目录的存在并有正确的权限。…

    MongoDB 2023年5月16日
    00
  • Mongodb实现的关联表查询功能【population方法】

    下面就详细讲解一下 “Mongodb实现的关联表查询功能【population方法】” 的完整攻略,包括两条示例说明。 什么是population方法 population 方法是 mongodb 官方提供的一种关联操作方式。通过这种方式,可以在查询某个集合时,把其关联的另一个集合中符合某些条件的文档也一并查询出来。 这种操作方式的好处在于,可以一次性查询出…

    MongoDB 2023年5月16日
    00
  • MongoDB的索引

    下面是MongoDB的索引的完整攻略。 什么是MongoDB的索引? MongoDB的索引是一种数据结构,可以快速的定位特定的数据记录。在MongoDB中,每个集合都有一个_id字段作为默认索引。除了默认索引以外,用户可以根据需要为其他的字段创建其他类型的索引,以便更快的访问数据。 MongoDB索引的类型 MongoDB支持多种类型的索引,常用的有以下几种…

    MongoDB 2023年5月16日
    00
  • mongoDB4.2.8备份恢复与导出导入(推荐)

    MongoDB 4.2.8 备份恢复与导出导入攻略 1. 备份恢复 备份方法 在 MongoDB 中,采用 mongodump 工具进行备份。使用 mongodump 工具进行数据库备份时,MongoDB 将整个集合的所有数据和索引导出到 BSON 文件中。 以下是备份的具体步骤: 打开命令行工具或 shell 终端,输入如下命令进行备份: mongodum…

    MongoDB 2023年5月16日
    00
  • 通过DBeaver连接Phoenix操作hbase的方法

    通过DBeaver连接Phoenix操作hbase的方法 安装DBeaver 首先,我们需要安装一个数据库管理工具DBeaver,可以从官网 https://dbeaver.io/download/ 下载对应的安装包进行安装。 配置Phoenix JDBC连接 下载Phoenix客户端JDBC驱动 要连接Phoenix,我们需要先下载并安装Phoenix客户…

    MongoDB 2023年5月16日
    00
  • MongoDB最基本命令速查笔记

    下面是“MongoDB最基本命令速查笔记”的完整攻略: MongoDB最基本命令速查笔记 前言 这是一份针对MongoDB初学者的速查笔记,涵盖了MongoDB最基本的命令和操作。本文假设您已经安装好了MongoDB,并且熟悉了MongoDB Shell。如果您还没有安装MongoDB,可以参考官方文档进行安装:https://docs.mongodb.co…

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