> 技术文档 > spring data mongodb 入门使用手册

spring data mongodb 入门使用手册

 <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 { @Id private String id; @Field(name = \"name\") private String name; @Field(name = \"age\") private Integer age; @Field(name = \"sex\") private String sex; @Transient private String address;}

数据访问层 StudentRepository.java

需要实现接口public interface org.springframework.data.mongodb.repository.MongoRepository ,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():参数名

插入数据

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

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