<!--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的基礎使用方式