【Java】使用IntelliJ IDEA搭建SSM(MyBatis-Plus)框架并连接MySQL数据库

news2024/11/24 20:42:51

步骤

  • 0 准备工作
  • 1 创建Maven项目
  • 2 配置Maven依赖
  • 3 配置数据源
  • 4 项目结构
  • 5 创建实体类
  • 6 创建数据访问层
  • 7 创建服务层
  • 8 创建Controller层
  • 9 启动项目
  • 10 使用Postman测试接口

0 准备工作

  1. 下载并安装 IntelliJ IDEA
  2. 下载并安装 MySQL 数据库
  3. 下载并安装Postman测试工具
  4. 使用 Navicat 创建一个 MySQL 数据库

1 创建Maven项目

  1. 打开 IntelliJ IDEA,选择 "File"→ “New” → “Project”。
  2. 选择"Maven"作为项目类型,并设置项目名称、项目位置。
  3. 设置Group Id和Artifact Id,点击"Create"创建项目。
    在这里插入图片描述

2 配置Maven依赖

在pom.xml文件中添加SpringBoot和MyBatis-Plus等的依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <!-- 定义父项目,使用Spring Boot 的版本管理 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.17</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <!-- 项目的基本信息 -->
  <groupId>com.z</groupId>
  <artifactId>MySSM</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>MySSM</name>
  <description>MySSM</description>
  <!-- 定义Java版本 -->
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <!-- Spring Boot Web Starter,包含了Spring MVC等 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- MyBatis Spring Boot Starter -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.3.1</version>
    </dependency>
    <!-- MySQL Connector Java -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- Lombok,简化Java代码 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- Spring Boot Starter Test -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- MyBatis-Plus Starter -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <!-- Swagger Annotations -->
    <dependency>
      <groupId>io.swagger</groupId>
      <artifactId>swagger-annotations</artifactId>
      <version>1.5.22</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <image>
            <builder>paketobuildpacks/builder-jammy-base:latest</builder>
          </image>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

使用Maven工具或IDEA的自动构建功能,下载依赖。

若出现如下错误:
在这里插入图片描述
那么点击Maven设置,选择Maven主路径为本地的Maven下载路径:
在这里插入图片描述
在这里插入图片描述

3 配置数据源

在application.yml文件中配置数据库连接等信息:

server:
  # 端口
  port: 8080

spring:
  # 数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/your_database_name?characterEncoding=utf-8
    username: your_username
    password: your_password
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss


mybatis-plus:
  # mapper文件映射路径
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    # 打印SQL语句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

替换上面的示例中的your_database_nameyour_usernameyour_password为实际数据库中的信息和数据。

4 项目结构

项目结构如下图所示:
在这里插入图片描述

5 创建实体类

创建实体类(entity),例如Student.java:

package com.z.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName("student")
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    /**id*/
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "id")
    private Integer id;

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "性别")
    private String sex;

    @ApiModelProperty(value = "年龄")
    private Integer age;

    @ApiModelProperty(value = "专业")
    private String major;
}

6 创建数据访问层

创建数据访问层(mapper),例如StudentMapper.java:

package com.z.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.z.entity.Student;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface StudentMapper extends BaseMapper<Student> {
}

创建对应的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.z.mapper.StudentMapper">
</mapper>

7 创建服务层

创建服务层(service)及其实现,例如StudentService.java:

Service层:

package com.z.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.z.entity.Student;

public interface StudentService extends IService<Student> {
}

Service实现层:

package com.z.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.z.entity.Student;
import com.z.mapper.StudentMapper;
import com.z.service.StudentService;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {

}

8 创建Controller层

创建Controller层,处理业务逻辑,例如StudentController.java(以返回数据列表为例):

package com.z.controller;

import com.z.entity.Student;
import com.z.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/test")
public class StudentController {
    @Autowired
    private StudentService studentService;

    @GetMapping("/list")
    public List<Student> listStudent() {
        return studentService.list();
    }
}

9 启动项目

编写Main.java运行项目,并通过IDEA的启动按钮启动项目:

package com.z;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

10 使用Postman测试接口

  1. 在MySQL数据库中新建一个数据表student,其中存放几条测试数据:
    在这里插入图片描述

  2. 打开Postman,新建一个Get请求,并输入对应Controller中的请求URL进行测试,测试结果如下:
    在这里插入图片描述
    前端界面可通过该接口展示数据表中的数据。

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

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

相关文章

k8s环境排查nginx转发nacos请求失败问题

一、问题背景 k8s部署两个服务,一个nginx&#xff0c;一个nacos, 服务信息如下(nacos有两个端口): 服务 serviceNameservice类型porttargetPort nodePortnginxmonitor-cp-nginxNodePort808031082nacosmonitor-cp-nacosClusterIP88488848-98489848- ng的default.conf配置文件…

2023年低代码无代码产业大会 - 重塑数字化引擎,畅享现代化篇章:核心PPT资料下载

一、大会简介 2023年低代码无代码产业大会以“重塑数字化引擎&#xff0c;畅享现代化篇章”为主题&#xff0c;旨在探讨低代码、无代码技术的最新发展趋势、研究成果及在多个行业的深度应用。 随着数字化场景爆发式增长&#xff0c;低代码无代码技术发挥其“短平快”开发的优势…

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

js最新随机字符串&#xff0c;进制数随机字符串&#xff0c;更优秀的随机字符串方式&#xff0c;你绝对没用过的随机字符串方式&#xff0c;可控制位数&#xff01; 函数封装和传参 首先我们&#xff0c;要封装这样一个函数&#xff0c;首先要确定&#xff0c;传入哪些参数。…

队列实现方式、效率分析及应用场景

文章目录 一、什么是队列二、队列特性阻塞和非阻塞有界和无界单向链表和双向链表 三、Java队列接口继承图四、Java队列常用方法五、队列实现方式与效率分析六、队列的应用场景七、Python中队列与优先级队列使用 一、什么是队列 队列是一种特殊的线性表&#xff0c;遵循先入先出…

WebSocket协议在java中的使用

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

数字技术-IPC专利分类号对应表

数字技术-IPC专利分类号对应表&#xff0c;基于2023年的关键数字技术专利分类体系&#xff0c;通过国际专利分类&#xff08;IPC&#xff09;号进行筛选。这些数据涵盖了各种数字技术领域的创新&#xff0c;包括但不限于人工智能、大数据、云计算、物联网、5G通信等。利用关键词…

使用opencv实现图片相似度检测

1.为什么学这个,我对图像处理非常感兴趣,我联想到海尔的指纹识别门锁是如何进行检测的,我在想不应该呀,单片机性能这么差,应该是使用了训练后的数据去检测图片的,如果我要实现草莓检测,知道它是不是草莓,我觉得单纯使用图片处理是不够的,我考虑过使用指纹模块来接触草莓从而实现…

Bypass open_basedir的方法

文章目录 open_basedir概念绕过方法命令执行绕过symlink 绕过 &#xff08;软连接&#xff09;利用chdir()与ini_set()组合绕过 例题 [suctf 2019]easyweb open_basedir概念 open_basedir是php.ini的设置 在open_basedir设置路径的话 那么网站访问的时候 无法访问除了设置以外的…

【Android Jetpack】Navigation的使用

引入 单个Activity嵌套多个Fragment的UI架构模式&#xff0c;非常非常普遍。但是&#xff0c;对Fragment的管理一直是一件比较麻烦的事情。工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。页面的切换通常还包括对应用程序App bar的管理、Fragme…

Pinctrl子系统和GPIO子系统实验

驱动入口出口函数&#xff1a; static int __init led_init(void) {return 0; } static void __exit led_exit(void) { }module_init(led_init);module_exit(led_exit);MODULE_LICENSE("GPL");字符设备驱动那一套 先创建设备结构体 &#xff08;cdev&#xff09; 1…

【SQL Server2019SSMS】安装与卸载手册

目录 &#x1f4cb;前言 ⛳️【SQL Serverssms】安装 1. SQL Server自定义安装 2. SSMS安装 ⛳️【SQL Server】卸载 &#x1f4cb;前言 &#x1f308;个人主页&#xff1a;Sarapines Programmer &#x1f525; 系列专栏&#xff1a;本期文章收录在《宝藏工具使用手册》&am…

4款优质国产办公软件,支持内网环境使用,可免费试用

在现代社会中&#xff0c;办公软件已成为企业必不可少的工具之一。与此同时&#xff0c;随着信息安全和数据保护意识的提升&#xff0c;越来越多的企业开始关注是否有适用于内网环境的国产办公软件。今天给大家分享4款优质国产办公软件&#xff0c;它们不仅支持内网环境使用&am…

Linux | Linux入门及常用基础命令介绍

关注CodingTechWork Linux Linux介绍 概述 Linux出现的时候是没有图像化界面&#xff0c;都是黑屏操作&#xff0c;靠命令来完成操作&#xff0c;如磁盘读写、网络管理等。企业级服务器的维护基本都通过跳板机ssh到对应的服务器上进行操作&#xff0c;一般无图形化界面。 远…

Linux4.5、进程状态

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 进程状态介绍 Linux下具体进程状态 R状态 和 S状态 D状态 T状态 t状态 Z状态 X状态 进程状态介绍 首先&#xff0c;进程状态有运行&#xff0c;阻塞&#xff0c;挂起&#xff0c;这些只是一个大体的概括&am…

Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现

Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现 Redis如果在没有开启认证的情况下&#xff0c;可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。–那么这也就是redis未授权访问了 Redis的默认端口是6379 可以用空间测绘搜索&#xff…

7.私信列表 + 发送列表

目录 1.私信列表 1.1 数据访问层 1.2 业务层 1.3 表现层 1.4 私信详情 2.发送列表 2.1 数据访问层 2.2 业务层 2.3 表现层 2.4 设置已读状态 1.私信列表 私信列表&#xff1a;查询当前用户的会话列表&#xff0c;每个会话只显示一条最新的私信、支持分页列表私信详情…

线性分组码的奇偶校验矩阵均匀性分析

回顾信道编解码知识&#xff0c;我们知道信道编码要求编码具有检纠错能力&#xff0c;作为FEC&#xff08;forward error correction&#xff09;前向纠错编码的一类&#xff0c;线性分组码表示校验位与信息位的关系能够线性表示。 在这篇文章中&#xff0c;并不是要讨论信道编…

解决Ruoyi-vue项目中接口请求超时的设置

背景&#xff1a; 有个几十亿的数据量的查询&#xff0c;查询时间超过40s&#xff0c;而Ruoyi-vue默认超过10s就拦截&#xff0c;因此需要修改默认超时时间 解决办法&#xff1a; 只需要打开request.js&#xff0c;把timeout设置扩大即可&#xff0c;默认是10000毫秒&#xff0…

基于自然语言处理的地铁工程车辆故障智能诊断研究

源自&#xff1a;《兵器装备工程学报》 作者&#xff1a;严硕&#xff0c; 徐永能&#xff0c; 何文韬 “人工智能技术与咨询” 发布 摘要 针对地铁工程车辆故障文本数据未得到合理利用的现象&#xff0c;提出了一种基于自然语言处理的故障智能诊断方法。该方法对故障文本进…

判断 一个整数 是不是 2 的阶次方

问题&#xff1a;判断 一个整数 是不是 2 的阶次方 思路&#xff1a; 1、先用while循环&#xff0c;判断该数字是否大于1 2、大于1&#xff0c;那么进行取模2&#xff0c;判断该数字是否是偶数 3、是偶数&#xff0c;那么除以2&#xff0c;看能不能整除掉&#xff0c;整除到最…