使用Spring Boot、MyBatis Plus和Elasticsearch的简单示例

news2024/11/15 7:16:22

在这里插入图片描述

下面是一个使用Spring Boot、MyBatis Plus和Elasticsearch的简单示例:

  1. 首先,在pom.xml文件中添加以下依赖:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>6.5.20</version>
</dependency>
  1. 创建一个Spring Boot应用程序:
@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}
  1. 在application.properties文件中配置Elasticsearch:
# Elasticsearch连接配置
spring.data.elasticsearch.cluster-name=elasticsearch-cluster
spring.data.elasticsearch.cluster-nodes=localhost:9200
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.repositories.bootstrap-mode=local
spring.data.elasticsearch.repositories.type=elasticsearch
spring.data.elasticsearch.repositories.uri=http://localhost:9200
spring.data.elasticsearch.repositories.settings.number_of_shards=3
spring.data.elasticsearch.repositories.settings.number_of_replicas=1
spring.data.elasticsearch.repositories.settings.index.refresh_interactions=10s
spring.data.elasticsearch.repositories.settings.index.refresh_interval=1s
spring.data.elasticsearch.repositories.settings.index.lifecycle.name=my-index
spring.data.elasticsearch.repositories.settings.index.lifecycle.type=delete
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.alias=rollover
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.max_age=1d
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.actions=create,delete
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.type=delete
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.base=0
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.max_size=10g
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.max_age=1d

#MyBatis配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.entity

spring.data.elasticsearch.cluster-name:设置Elasticsearch集群的名称。
spring.data.elasticsearch.cluster-nodes:设置Elasticsearch集群中的节点地址。
spring.data.elasticsearch.repositories.enabled:设置是否启用Elasticsearch数据源。
spring.data.elasticsearch.repositories.bootstrap-mode:设置Elasticsearch数据源的启动方式。
spring.data.elasticsearch.repositories.type:设置Elasticsearch数据源的类型。
spring.data.elasticsearch.repositories.uri:设置Elasticsearch数据源的地址。
spring.data.elasticsearch.repositories.settings.number_of_shards:设置Elasticsearch数据源的分片数。
spring.data.elasticsearch.repositories.settings.number_of_replicas:设置Elasticsearch数据源的副本数。
spring.data.elasticsearch.repositories.settings.index.refresh_interactions:设置Elasticsearch数据源的实时更新时间间隔。
spring.data.elasticsearch.repositories.settings.index.refresh_interval:设置Elasticsearch数据源的更新时间间隔。
spring.data.elasticsearch.repositories.settings.index.lifecycle.name:设置Elasticsearch数据源的生命周期名称。
spring.data.elasticsearch.repositories.settings.index.lifecycle.type:设置Elasticsearch数据源的生命周期类型。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.alias:设置Elasticsearch数据源的自动轮换别名。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.max_age:设置Elasticsearch数据源的最大自动轮换年限。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.actions:设置Elasticsearch数据源的自动轮换动作类型。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.type:设置Elasticsearch数据源的删除类型。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.base:设置Elasticsearch数据源的删除基础地址。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.max_size:设置Elasticsearch数据源的最大删除大小。
spring.data.elasticsearch.repositories.settings.index.lifecycle.rollover.strategy.delete.max_age:设置Elasticsearch数据源的最大删除年限。

  1. 创建一个实体类:
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String password;

    private Integer age;

    //getter and setter methods
}
  1. 创建一个Mapper接口:
public interface UserMapper {
    User findById(Long id);
    List<User> findAll();
    int deleteById(Long id);
}
  1. 创建一个Mapper实现类:
@Mapper
public interface UserMapperImpl extends BaseMapper<User> {
    User findById(Long id);
    List<User> findAll();
    int deleteById(Long id);
}
  1. 创建一个UserService实现类:
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public User findById(Long id) {
        return userMapper.findById(id);
    }

    @Override
    public List<User> findAll() {
        return userMapper.findAll();
    }

    @Override
    public int deleteById(Long id) {
        return userMapper.deleteById(id);
    }
}
  1. 创建一个UserController实现类:
@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/user/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.findById(id);
        if (user == null) {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.ok(user);
    }

    @PostMapping("/user")
    public ResponseEntity<User> createUser(@RequestBody User user) {
        userService.save(user);
        return ResponseEntity.ok(user);
    }

    @DeleteMapping("/user/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        userService.deleteById(id);
        return ResponseEntity.ok().build();
    }
}
  1. 创建一个UserServiceImpl实现类:
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public User findById(Long id) {
        return userMapper.findById(id);
    }

    @Override
    public List<User> findAll() {
        return userMapper.findAll();
    }

    @Override
    public int deleteById(Long id) {
        return userMapper.deleteById(id);
    }

    @Override
    public User save(User user) {
        return userMapper.insert(user);
    }

    @Override
    public void update(User user) {
        userMapper.updateByPrimaryKey(user);
    }

    @Override
    public void delete(User user) {
        userMapper.deleteByPrimaryKey(user);
    }
}

以上就是一个简单的Spring Boot、MyBatis Plus和Elasticsearch的示例。在这个示例中,我们创建了一个User实体类,一个UserMapper接口和一个UserService实现类来处理用户的CRUD操作。我们还配置了MyBatis Plus和Elasticsearch,并创建了一个UserController来提供RESTful API来操作用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第五章

全连接神经网络 隐藏层的节点数决定了模型拟合能力&#xff0c;如果在单隐藏层设置足够多的节点&#xff0c;理论上可以拟合世界上各种维度的数据进行任意规则的分类&#xff0c;但会过拟合。 隐藏层的数量决定了其泛化能力&#xff0c;层数越多&#xff0c;推理的能力越强&am…

【前端工具】使用Echats生成关系图谱,可展开折叠

目录 一、需求背景与效果 二、echarts源码 一、需求背景与效果 根据服务关系制作关系图谱&#xff0c;echarts官方关系图没有想要的案例&#xff0c;网上也没有好的效果&#xff0c;故参考网上已有的部分案例&#xff0c;自行写了一个&#xff0c;效果还不错。 当前echarts…

Centos7单机安装Redis

安装Redis依赖 Redis是基于C语言&#xff0c;因此首先需要安装Redis所需要的gcc依赖&#xff1a; yum install -y gcc tcl ​ 上传安装包并解压 上传安装包redis-6.2.12至/home目录下 ​ # 解压 tar -xzf redis-6.2.12.tar.gz # 安装 cd redis-6.2.12 make && mak…

react ant table设置动态scroll,且某些列的长度固定

设置scroll x的值为列的个数*100 1.代码 const columns [ {title: 料号描述,dataIndex: itemDesc,align:left,width: 200,ellipsis: true,} ]<EditableProTableclassName"details-table"columns{columns}loading{loading}rowKey"id"value{dataSource}…

C++笔记之自引用结构体

C笔记之自引用结构体 code review! 文章目录 C笔记之自引用结构体1.在结构体中引用相同类型的结构体&#xff0c;并且可以使用指针或引用来实现。2.自引用结构体构建链表3.自引用结构体构建二叉树附:代码随想录——链表定义附:代码随想录——二叉树定义 1.在结构体中引用相同…

分布式幂等问题解决方案

目录 一 背景 二 什么是幂等 三 解决方案三部曲 第一部曲&#xff1a;识别相同请求 第二部曲&#xff1a;列出并减少副作用的分析维度 第三部曲&#xff1a;识别细粒度副作用&#xff0c;针对性设计解决方案 四 总结 一 背景 分布式系统由众多微服务组成&#xff0c;微…

从0到1搭建Springboot整合Quartz定时任务框架(保姆级教学+Gitee源码)

前言&#xff1a;最近学习了目前主流的若依框架&#xff0c;这是一个非常优秀的开源项目&#xff0c;故此我这边把它的源码全部剖析了一遍&#xff0c;简化了它的框架&#xff0c;我会通过这篇博客详细讲解我是如何进行推敲和从0到1搭建这个项目的流程。 目录 一、Quartz简介 …

Java并发(十二)----线程应用之多线程解决烧水泡茶问题

1、背景 统筹方法&#xff0c;是一种安排工作进程的数学方法。它的实用范围极广泛&#xff0c;在企业管理和基本建设中&#xff0c;以及关系复杂的科研项目的组织与管理中&#xff0c;都可以应用。 怎样应用呢&#xff1f;主要是把工序安排好。 比如&#xff0c;想泡壶茶喝。…

【前后端分离开发及项目部署流程】

文章目录 前后端分离开发技术1 前后端分离开发1.1 介绍1.2 开发流程1.3 前端技术栈&#xff08;了解&#xff09; 2 Yapi&#xff08;定义API接口&#xff09;2.1 介绍2.2 使用 3 Swagger3.1 介绍3.2 使用方式3.3 常用注解 4 项目部署4.1 部署架构4.2 部署环境说明4.3 部署前端…

chatgpt赋能python:如何使用Python访问共享目录——让共享变得简单易行

如何使用Python访问共享目录 —— 让共享变得简单易行 作为一种高效而强大的编程语言&#xff0c;Python拥有各种各样的应用。其中一个非常重要的应用场景就是对共享目录的访问和操作。无论是在家庭网络&#xff0c;企业内网或者云存储平台&#xff0c;共享目录的重要性毋庸置…

两个链表的入环节点(java)

两个链表的入环节点 两个链表的入环节点解题思路代码演示 链表相关的题 两个链表的入环节点 给定两个可能有环也可能无环的单链表&#xff0c;头节点head1和head2 请实现一个函数&#xff0c;如果两个链表相交&#xff0c;请返回相交的第一个节点。如果不相交返回null 要求如果…

ATTCK(一)之为什么要学习ATTCK

ATT&CK 简介 本系列旨在介绍网络红蓝对抗领域最好的ATT&CK矩阵模型&#xff0c;以期帮助有意愿深耕在红蓝对抗领域的人员能系统性的掌握红蓝对抗领域的知识和经验。本系列将详细ATT&CK的起源、发展历史&#xff0c;ATT&CK矩阵相对其他High-Level红蓝对抗模型…

Redis7【② Key通用命令 十大数据类型】

1 Key的通用命令 redis命令不区分大小写&#xff0c;但是key是区分大小写的。没有返回值的命令执行成功会返回1&#xff0c;失败返回0。 1. KEYS 查看所有的key&#xff0c;返回值是一个数组 2. EXISTS EXISTS key [key ...]&#xff1a;返回给定的key中已存在的个数&#xf…

前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模版

前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模版&#xff0c; 请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13221 效果图如下&#xff1a; 实现代码如下&#xff1a; # cc-selectBox #### 使用方法 使…

【计算机网络】可靠传输的实现机制

1、停止-等待协议SW 信道利用率 题目 小结 2.回退N帧协议GBN Go-Back-N 题目 小结

设计模式3:单例模式:JMM与volatile和synchronized的关系

本文目录 JMM简介Java 内部内存模型(The Internal Java Memory Model)硬件内存架构(Hardware Memory Architecture)弥合 Java 内存模型和硬件内存架构之间的差距(Bridging The Gap Between The Java Memory Model And The Hardware Memory Architecture)1.共享对象的可见性2.竞…

OpenStack(T版)——计算(Nova)服务介绍与安装

文章目录 OpenStack(T版)——计算(Nova)服务介绍与安装安装与配置(controller)准备(1)创建数据库(2)加载环境变量(3)创建认证服务凭据(4)创建Nova计算服务组件的API endpoint 安装和配置Nova计算服务组件(1)安装软件包(2)编辑/etc/nova/nova.conf 完成以下操作(3)同步数据库验证…

云服务器Linux防火墙云锁安装部署及使用 技术支持服务器安全运维

服务器必备安全防护及运维管理SAAS解决方案&#xff0c;支持windows/linux服务器跨平台实时、批量、远程安全管理&#xff0c;有效对抗服务器入侵和网络攻击。 服务器&#xff1a;Redhat/CentOS/Ubuntu/SUSE/中标麒麟 64位 Web中间件&#xff1a;Apache/Nginx/kangle/Tomcat/W…

【软考网络管理员】2023年软考网管初级常见知识考点(26)- HTML常见属性标签、表格、表单详解

涉及知识点 Html的概念&#xff0c;html常见标签&#xff0c;html常见属性&#xff0c;html表格&#xff0c;html表单&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码…

5-2图像处理经典案例:正弦噪声图像去噪

学习目标&#xff1a; 图像处理经典案例 去除噪声 1.简述 图像降噪的英文名称是Image Denoising&#xff0c; 图像处理中的专业术语。是指减少数字图像中噪声的过程&#xff0c;有时候又称为图像去噪。图像的噪声来源相对复杂&#xff0c;搞清楚图像噪声的成因对我们进行…