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日

相关文章

  • Java操作MongoDB模糊查询和分页查询

    我会详细讲解Java操作MongoDB模糊查询和分页查询的完整攻略,并且包含两条示例说明。 一、MongoDB模糊查询 在MongoDB中使用$regex运算符实现模糊查询。以下是使用Java驱动程序实现MongoDB模糊查询的步骤: 创建MongoClient和MongoDatabase实例 MongoClient mongoClient = new Mo…

    MongoDB 2023年5月16日
    00
  • mongodb增量备份脚本的实现和原理详解

    下面我就给你详细讲解一下“mongodb增量备份脚本的实现和原理详解”的完整攻略,包含两条示例说明。 MongoDB增量备份脚本的实现和原理详解 一、MongoDB备份原理 MongoDB 是一款主流的 NoSQL 数据库,由于 MongoDB 没有提供类似 MySQL 全量备份和增量备份的直接备份方法,所以我们可以通过 dump 命令将 MongoDB 导…

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

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

    MongoDB 2023年5月16日
    00
  • Windows下MongoDB的下载安装、环境配置教程图解

    步骤一:下载MongoDB 打开MongoDB官网(https://www.mongodb.com/),点击“Download”进入下载页面。 在下载页面中,找到“Community Server”版块中的Windows版本,根据自己的系统选择对应的版本,然后点击“DOWNLOAD”按钮即可下载MongoDB的安装包。 步骤二:安装MongoDB 双击安装包…

    MongoDB 2023年5月16日
    00
  • MongoDB启动报错 28663 Cannot start server

    针对“MongoDB启动报错 28663 Cannot start server”这个问题,我们可以尝试以下几步来排查问题: 确认 MongoDB 的安装路径是否存在问题,例如:文件权限或者文件夹权限等问题。可以尝试以管理员身份启动命令行再次运行 MongoDB,或者检查 MongoDB 所在的文件夹以及其子文件夹的权限是否有误。 检查 MongoDB 配置…

    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 2023年5月16日
    00
  • 详解Vue开发网站seo优化方法

    详解Vue开发网站SEO优化方法 前言 在Vue.js的开发中,如何进行SEO(搜索引擎优化)一直是开发者关心的问题之一。因为Vue.js的渲染方式是通过在客户端逐一解析和渲染的方式达到展示效果,对于搜索引擎来说,并不能够很好的解析和抓取网页的内容和结构,从而影响到网站的SEO效果。 本文将详细讲解在Vue.js开发中如何进行SEO优化,并通过两个示例说明如…

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