Contents

SpringBoot with MongodbRepository

Spring with MongodbRepository 简单使用

这篇笔记参考自 这篇文章

定义数据类型

class Product(
    val id: String,
    val name: String,
    val price: Int
)

我们可以

  1. 手动定义对象存储的集合位置
    @Document(collection = "products")
    class Product(
    
    )
    
  2. 手动定义对象的主键
    class Product(
        @MongoId
        val id: String
    )
    

定义 Repository

@Repository
interface ProductRepository: MongoRepository<Product, String> {
    fun findAllByNameLike(name: String): List<Product>
    fun findById(id: String): Product?
    fun existsByName(name: String): Bool
}

继承自 MongoRepository 的接口类与 JPA 相似,定义好方法即可, CRUD 方法也与之类似

排序

@Repository
interface ProductRepository: MongoRepository<Product, String> {
    fun findAllByNameLike(name: String, sort: Sort): List<Product>
}
val sort = Sort.by(Sort.Direction.ASC, "price")
val sort = Sort.by(
    Sort.Order.asc("price"),
    Sort.Order.desc("name")
)

原生查询语法

@Query("{'name': {'$eq': '?0'}}")
fun f1(name: String): Product?

@Query("{'name': {\$regex: '?0'}}")
fun f2(name: String): Product?