当前位置: 首页 > 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.dtcms.com/a/303784.html

相关文章:

  • [Linux入门] Linux 部署本地 APT 仓库及 NFS 共享服务全攻略
  • Java -- String类-StringBuffer类-StringBuilder类
  • uniapp开发微信小程序(新旧版本对比:授权手机号登录、授权头像和昵称)
  • K-近邻算法(KNN算法)的K值的选取--交叉验证+网格搜索
  • 搭建专属AI聊天网站:NextChat + 蓝耘MaaS平台完整部署指南
  • 2025年7月技术问答第4期
  • 树形结构递归查询与嵌套结构转换:Flask + PostgreSQL 完整实现
  • 力扣面试150题--位1的个数
  • 【第四章自定义编辑器窗口_扩展默认的编辑器窗口_扩展Hierarchy窗口(7/11)】
  • QT项目 -仿QQ音乐的音乐播放器(第三节)
  • 深入理解 Qt 元对象系统 (Meta-Object System)
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析六
  • [明道云]-基础教学2-工作表字段 vs 控件:选哪种?
  • HTTP 与 HTTPS 的区别
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,编辑模式支持点、线、面的捕捉
  • Objective-c 初阶——异常处理(try-catch)
  • 盛最多水的容器-双指针
  • 注册发送手机短信
  • bash变量名不能有连字符
  • Spark初探:揭秘速度优势与生态融合实践
  • RabbitMQ面试精讲 Day 7:消息持久化与过期策略
  • H.264视频的RTP有效载荷格式(翻译自:RFC6184 第5节 RTP有效载荷格式)
  • 网络协议——MPLS(多协议标签转发)
  • 力扣30 天 Pandas 挑战(3)---数据操作
  • LeetCode 283 - 移动零
  • CTF-Web学习笔记:服务端请求伪造(SSRF)篇
  • 单片机学习笔记.PWM
  • 第4章唯一ID生成器——4.5 美团点评开源方案Leaf
  • 医疗AI新基建:MCP与A2A协议的破局与前瞻
  • JVM 崩溃(Fatal Error)解决方法