当前位置: 首页 > news >正文

spring data mongodb 入门使用手册

<!--pom.xml引入依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

文档映射类Student.java

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "student")
public class Student {@Idprivate String id;@Field(name = "name")private String name;@Field(name = "age")private Integer age;@Field(name = "sex")private String sex;@Transientprivate String address;
}

数据访问层 StudentRepository.java

需要实现接口public interface org.springframework.data.mongodb.repository.MongoRepository<T, ID> ,MongoRepository接口实现了很多方法,感兴趣的可以读一读源码,我这里不一一列举

import cn.train.mongodemo.mongoEntities.Student;
import org.springframework.data.mongodb.repository.*;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;import java.util.List;@Repository(value = "studentRepository")
public interface  StudentRepository extends MongoRepository<Student,String> {}

虽然MongoRepository提供了很多方法,但是我们仍然可以自定义自己的方法以满足业务需求,如下所示

自定义查询方法

// 按姓名查询
@Query(value = "{name:?0}")
Student findByName(String name);
// 按年龄查询
@Query(value = "{age:?0}")
List<Student> findByAge(Integer age);

自定义删除方法

// 按姓名删除,返回删除数量
@DeleteQuery(value = "{name: :#{#name}}")
long deleteByName(@Param(value = "name") String name);

自定义更新方法

// 根据姓名修改姓名
@Query(value = "{name: :#{#old_name}}")
@Update(value = "{'$set': {'name': :#{#new_name}}}")
void updateByName(@Param("new_name") String newName, @Param("old_name") String oldName);

@Param 参数

描述:用于绑定查询方法参数与查询语句中命名参数的注解;特别注意参数应用的方式——:#{#参数名}!!!

全类名:org.springframework.data.repository.query.Param

作用范围:PARAMETER

属性:String value():参数名

插入数据

@Service
public class StudentService{@AutowiredStudentRepository studentRepository;public void insertAll(Iterable<Student> students) {// 直接调用MongoRepository的insert默认方法,这个方法不但可以插入单文档,也可以插多文档studentRepository.insert(students);}
}

以上演示就是spring data mongodb的基础使用方式

http://www.lryc.cn/news/603694.html

相关文章:

  • COPRAS(Complex Proportional Assessment)简介与简单示例
  • 操作系统-lecture2(操作系统结构)
  • Qt|槽函数耗时操作阻塞主界面问题
  • 安卓逆向2-安卓刷机和获取root权限和安装LSPosed框架
  • iPhone 神级功能,3D Touch 回归!!!
  • Qt模型/视图结构
  • 信息技术发展与区块链的崛起:深度解析与未来展望
  • 搭建一个自定义的 React 图标库
  • 大模型加速的几种attention总结
  • PostgreSQL 中 date_trunc 为什么能走索引?【待验证】
  • docker安装powerdns pdnsadmin,pdns-recursor实现内网dns解析
  • 详细说明零拷贝
  • 【git】误操作后怎么解决
  • 【Android】日期选择器
  • GitHub下载项目完整配置SSH步骤详解
  • iOS-实用框架
  • go标准库log模块学习笔记
  • Gartner发布2025年数据安全技术成熟度曲线:29项最新数据安全相关技术发展和应用趋势
  • 2025-07-29 学习记录--LaTeX-LaTeX知识点总结
  • 从硬编码到自主智能体:营销AI的20年技术演进与未来展望
  • decoupleQ:通过将参数解耦为整数与浮点数,实现2比特后训练统一量化
  • AI搜索SEO优化解决方案指南
  • 基于Dify构建本地化知识库智能体:从0到1的实践指南
  • 6、微服务架构常用十种设计模式
  • elememtor 添加分页功能
  • Vant:轻量可靠的移动端 Vue 组件库深度解析
  • prometheus_client 调用统计
  • HBase、MongoDB 和 Redis 的区别详解
  • Ubuntu 抽取系统制作便于chroot的镜像文件
  • P1020 [NOIP 1999 提高组] 导弹拦截