• 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);
        }
    }
  • 相关阅读:
    最短路模板
    Vue中的列表item依次进入动画
    Vue2.6.11中禁止点击事件冒泡
    <img/>标签实现加载错误图的方法(包含Vue框架中的使用)
    H5实现弹窗从下边弹出、关闭效果
    CSS img 宽度固定,高度自适应
    CSS实现Android LinearLayout的效果
    css中实现Android relativeLayout的效果
    Android Log写入本地文件
    Cannot fit requested classes in a single dex file (# methods: 148419 > 65536
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12578781.html
Copyright © 2020-2023  润新知