Springboot 集成 Elasticsearch 详解,springmvc原理图解

主流的一些功能,ES 已经给你封装,默认给与了支持(如:示例1-6),这些相关的实现不需要我们再写 dao 层,但一些较为业务性的查询,还需要自己手动来写。

1. 添加文档


controller 层:


@PostMapping("/save")

public String save(@RequestBody User user) {

    long id = System.currentTimeMillis();

    user.setId(id);

    userService.save(user);

    return "新增成功,id为:" + id;

}



service 层:


@Override

public Long save(User user) {

    userDao.save(user);

    return user.getId();

}

测试效果:

2. 修改文档


【注】新增文档和修改文档操作,dao 层都是调用的 save() 方法,当 id 不存在的时候,ES(ElasticSearch)就会执行新增操作,当 id 对象已经存在的时候,就会执行修改操作。

controller 层:


@PostMapping("/update")

public String update(@RequestBody User user) {

    userService.save(user);

    return "修改成功";

}

service 层:


@Override

public Long save(User user) {

    userDao.save(user);

    return user.getId();

}

测试效果:

3. 根据ID查询文档


controller 层:


@GetMapping("/{id}")

public User getById(@PathVariable("id") Long id) {

    return userService.getById(id);

}

service 层:


@Override

public User getById(Long id) {

    Optional<User> find = userDao.findById(id);

    if (find.isPresent()) {

        return find.get();

    }

    return null;

}



测试效果:

4. 根据ID删除文档


controller 层:


@DeleteMapping("/{id}")

public String deleteById(@PathVariable("id") Long id) {

    userService.deleteById(id);

    return "删除成功";

}

service 层:


@Override

public void deleteById(Long id) {

    userDao.deleteById(id);

}



测试效果:

5. 查询所有文档


controller 层:


@GetMapping("/all")

public List<User> all() {

    return userService.getAll();

}

service 层:


@Override

public List<User> getAll() {

    Iterable<User> users = userDao.findAll();

    if (users == null) {

        return Collections.emptyList();

    }

    List<User> userList = new ArrayList<User>();

    users.forEach(o -> userList.add(o));

    return userList;

}

测试效果:

6. 条件查询(单个条件)


如:查询name包含"玛丽"的数据

controller 层:


@GetMapping("/listByName")

public List<User> listByName(String name) {

    return userService.getListByName(name);

}

service 层:


@Override

public List<User> getListByName(String name) {

    return userDao.findByName(name);

}

dao 层:


List<User> findByName(String name);

测试效果:

7. 条件查询(多条件)


如:查询 name包含"玛丽",年龄为25的数据。

controller 层:


@GetMapping("/listByNameAndAge")

public List<User> listByNameAndAge(String name, Integer age) {

    return userService.getListByNameAndAge(name, age);

}



service 层:


@Override

public List<User> getListByNameAndAge(String name, Integer age) {

    return userDao.findByNameAndAge(name, age);

}

dao 层:


List<User> findByNameAndAge(String name, Integer age);

8. 分页查询(降序)


controller 层:


@GetMapping("/listOrderByAgeDesc")

public List<User> listOrderByAgeDesc() {

    return userService.getListOrderByAgeDesc();

}



service 层:


@Override

public List<User> getListOrderByAgeDesc() {

    return userDao.findByOrderByAgeDesc();

}

dao 层:


List<User> findByOrderByAgeDesc();

测试效果:

9. 分页查询(升序)


controller 层:


@GetMapping("/listOrderByAgeAsc")

public List<User> listOrderByAgeAsc() {

    return userService.getListOrderByAgeAsc();

}



service 层:


@Override

public List<User> getListOrderByAgeAsc() {

    return userDao.findByOrderByAgeAsc();

}



dao 层:


List<User> findByOrderByAgeAsc();

测试效果:

10. 分页查询


controller 层:


@GetMapping("/page")

public Page<User> page(Integer pageNum, Integer pageSize) {

    return userService.getPage(pageNum, pageSize);

}

service 层:


@Override

public Page<User> getPage(int pageNum, int pageSize) {

    // 注意,这里的pageNum是从0开始的,如果要查询第1页数据,pageNum应该为0

    Pageable pageable = PageRequest.of(pageNum, pageSize);

    return userDao.findAll(pageable);

}

测试效果:

11. 范围查询( > )


controller 层:


@GetMapping("/listGreaterThanAge")

public List<User> listGreaterThanAge(Integer age) {

    return userService.getListGreaterThanAge(age);

}



自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-FLEySuFE-1712670396328)]

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

[外链图片转存中…(img-KrZz6SEt-1712670396328)]

[外链图片转存中…(img-6L9S3oYX-1712670396328)]

更多笔记分享

[外链图片转存中…(img-TvEgTviJ-1712670396329)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-5KhFGT01-1712670396329)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值