SpringData ElasticSearch 实现CRUD操作

  

1.删改

  修改:

// 修改
@Test
public void testUpdate() {
    // 判断数据库中是否有指定id的数据,如果没有则进行保存,如果有就进行更新
    Article article = new Article();
    article.setId(1L);
    article.setTitle("疯狂Java");
    article.setContent("小伙子,还年轻,转行吧");
    articleDao.save(article);
    // articleDao.saveAll(Article)
}

  删除:

// 删除
@Test
public void testDelete() {
    // articleDao.delete(Article);
    // articleDao.deleteAll();
    // articleDao.deleteAll(Iterable);
    articleDao.deleteById(1L);
}

2.接口方法查询

  查询所有:

@Test
public void testFindAll() {
    Iterable<Article> iterable = articleDao.findAll();
    for (Article article : iterable) {
        System.out.println(article);
    }
}

  主键查询:

@Test
public void testFindById() {
    Optional<Article> opt = articleDao.findById(20L);
    System.out.println(opt.get());
}

  分页查询:

@Test
public void testFindAllWithPage() {
    Page<Article> page = articleDao.findAll(PageRequest.of(0, 3));
    System.out.println("总页数:" + page.getTotalPages());
    System.out.println("总记录数:" + page.getTotalElements());
    System.out.println("当前页:" + page.getNumber());
    for (Article article : page.getContent()) {
        System.out.println(article);
    }
}

  排序查询:

@Test
public void testFindAllWithSort() {
    Iterable<Article> iterable = articleDao.findAll(Sort.by(Sort.Order.desc("id")));
    for (Article article : iterable) {
        System.out.println(article);
    }
}

  分页加排序查询:

@Test
public void testFindAllWithPageAndSort() {
    PageRequest page = PageRequest.of(1, 10, Sort.by(Sort.Order.desc("id")));
    Page<Article> all = articleDao.findAll(page);
    System.out.println("总页数:" + all.getTotalPages());
    System.out.println("总记录数:" + all.getTotalElements());
    System.out.println("当前页:" + all.getNumber());
    for (Article article : all.getContent()) {
        System.out.println(article);
    }
}

3.命名规则查询

  es的命名规则跟jpa基本一致,常见的如下:

    

   dao层接口新增方法:

// 根据标题查询
List<Article> findByTitle(String title);

// 根据标题或内容查询
List<Article> findByTitleOrContent(String title, String content);

// 根据标题或内容查询(含分页)
Page<Article> findByTitleOrContent(String title, String content, Pageable pageable);

  测试:

// 根据标题查询
@Test
public void testFindByTitle() {
    List<Article> list = articleDao.findByTitle("java");
    for (Article article : list) {
        System.out.println(article);
    }
}

// 根据标题或内容查询
@Test
public void testFindByTitleOrContent() {
    List<Article> list = articleDao.findByTitleOrContent("哈哈","入门");
    for (Article article : list) {
        System.out.println(article);
    }
}

// 根据标题或内容查询(含分页)
@Test
public void testFindByTitleOrContentAndPage() {
    PageRequest pageRequest = PageRequest.of(2, 3);
    Page<Article> page = articleDao.findByTitleOrContent("哈哈", "入门", pageRequest);
    for (Article article : page) {
        System.out.println(article);
    }
}

 

posted @ 2020-03-27 00:46  糖不甜,盐不咸  阅读(292)  评论(0编辑  收藏  举报