EsDocRepository 实体仓储类, 提供了针对实体类的各种基本的CRUD功能。
以下代码详细参考单元测试类EsDocRepositoryTests
import net.jkcode.jkmvc.es.EsDocRepository
val rep = EsDocRepository.instance(MessageEntity::class.java) // 参数是实体类 MessageEntity
@Test
fun testSave() {
val e = buildEntity(1) // 构建一个 MessageEntity 对象
val r = rep.save(e) // 单个保存
println("插入单个文档: " + r)
}
@Test
fun testSaveAll() {
val items = ArrayList<MessageEntity>()
for (i in 1..10) {
val e = buildEntity(i) // 构建一个 MessageEntity 对象
items.add(e)
}
rep.saveAll(items) // 批量保存
println("批量插入")
}
@Test
fun testUpdate() {
val e = rep.findById("1")!! // 根据id来查询单个
e.fromUid = randomInt(10)
e.toUid = randomInt(10)
val r = rep.update(e) // 增量更新
println("更新文档: " + r)
}
@Test
fun testDeleteById() {
rep.deleteById("1") // 单个删除
println("删除id=1文档")
}
@Test
fun testDeleteAll() {
val pageSize = 5
val query = rep.queryBuilder() // 构建 query builder
.must("fromUid", ">=", 0)
//val ids = rep.deleteAll(query)
val ids = query.deleteDocs(pageSize) // 根据query builder来查询并删除
println("删除" + ids.size + "个文档: id in " + ids)
}
@Test
fun testFindById() {
val id = "1"
val entity = rep.findById(id) // 根据id来查询单个
println("查单个:" + entity.toString())
}
@Test
fun testFindAll() {
val query = rep.queryBuilder() // 构建query builder
//.must("fromUid", ">=", 0)
.orderByField("id") // 排序
.limit(10) // 分页
val (list, size) = rep.findAll(query) // 根据query builder来查询多个
println("查到 $size 个文档")
for (item in list)
println(item)
}
@Test
fun testCount() {
val query = rep.queryBuilder()
//.must("fromUid", ">=", 0)
val size = rep.count(query)
println("查到 $size 个文档")
}
@Test
fun testScrollAll() {
val query = rep.queryBuilder()
//.must("fromUid", ">=", 0)
.orderByField("id") // 排序
//.limit(1) // 分页无效, 都是查所有数据
val list = rep.scrollAll(query, 5)
println("查到 ${list.size} 个文档")
for (item in list)
println(item)
}