Skip to content

Latest commit

 

History

History
123 lines (108 loc) · 2.78 KB

EsDocRepository.md

File metadata and controls

123 lines (108 loc) · 2.78 KB

EsDocRepository

EsDocRepository 实体仓储类, 提供了针对实体类的各种基本的CRUD功能。 以下代码详细参考单元测试类EsDocRepositoryTests

1. 实例化 EsDocRepository

import net.jkcode.jkmvc.es.EsDocRepository

val rep = EsDocRepository.instance(MessageEntity::class.java) // 参数是实体类 MessageEntity

2. 单个保存(id存在就是修改, 否则就是插入)

@Test
fun testSave() {
    val e = buildEntity(1) // 构建一个 MessageEntity 对象
    val r = rep.save(e) // 单个保存
    println("插入单个文档: " + r)
}

3. 批量保存

@Test
fun testSaveAll() {
    val items = ArrayList<MessageEntity>()

    for (i in 1..10) {
        val e = buildEntity(i) // 构建一个 MessageEntity 对象
        items.add(e)
    }

    rep.saveAll(items) // 批量保存
    println("批量插入")
}

4. 增量更新

@Test
fun testUpdate() {
    val e = rep.findById("1")!! // 根据id来查询单个
    e.fromUid = randomInt(10)
    e.toUid = randomInt(10)
    val r = rep.update(e) // 增量更新
    println("更新文档: " + r)
}

5. 单个删除

@Test
fun testDeleteById() {
    rep.deleteById("1") // 单个删除
    println("删除id=1文档")
}

6. 批量删除

@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)
}

7. 根据id查询单个

@Test
fun testFindById() {
    val id = "1"
    val entity = rep.findById(id) // 根据id来查询单个
    println("查单个:" + entity.toString())
}

8. 查询全部, 并按照id排序

@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)
}

9. 统计行数

@Test
fun testCount() {
    val query = rep.queryBuilder()
            //.must("fromUid", ">=", 0)
    val size = rep.count(query)
    println("查到 $size 个文档")
}

10. 有游标的搜索

@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)
}