Spring Boot 项目创建

创建一个新项目:

打开 Spring Initializr 网址:https://start.spring.io/ ,然后创建一个新项目:

springboot3.3.5_jdk17:

  • Project(Maven)
  • 编程语言(Java 17)
  • Spring Boot 版本(3.3.*)
  • Packaging(Jar)

注意:包名不要使用纯数字,尽量规范,否则会出现奇怪的问题

添加以下依赖:

  • Spring Web
  • MyBatis Framework
  • MySQL Driver
  • Lombok
  • Spring Boot DevTools

模板1下载地址:demo_springboot3.3.5_jdk17.zip

解压后,拷贝到本地git仓库目录中。

在这里插入图片描述

导入项目并配置 Maven 仓库镜像

将下载的项目解压后,使用喜欢的 IDE(如 IntelliJ IDEA)打开。

pom.xml 文件中,添加 Maven 仓库的镜像配置,以加快依赖下载速度:

<project><!-- 其他内容 --><repositories><repository><id>aliyunmaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url></repository><repository><id>huaweicloud</id><name>huawei cloud maven</name><url>https://repo.huaweicloud.com/repository/maven/</url></repository></repositories><pluginRepositories><pluginRepository><id>aliyunmaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url></pluginRepository></pluginRepositories><!-- 其他内容 -->
</project>

配置 application.yml 文件

src/main/resources/ 目录下,创建一个 application.yml 文件,配置服务器端口和数据源:

server:port: 28080spring:datasource:url: jdbc:mysql://localhost:3306/rbac_system?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.rbacsystem

注意:

  • your_usernameyour_password 替换为您实际的 MySQL 数据库用户名和密码。
  • type-aliases-package 用于指定 MyBatis 的别名包路径,以简化映射配置。
server:port: 28080spring:datasource:url: jdbc:mysql://localhost:3306/rbac_system?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: rootpassword: XXXXXXXXXXXdriver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo
修改说明

1. server 配置

server:port: 28080
  • port 指定 Spring Boot 应用的运行端口号。
    • 当前配置为 28080,表示应用启动后可以通过 http://localhost:28080 访问。
    • 如果未配置,默认端口为 8080

2. spring.datasource 配置

spring:datasource:url: jdbc:mysql://localhost:3306/rbac_system?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: rootpassword: XXXXXXXXdriver-class-name: com.mysql.cj.jdbc.Driver
  • url 数据库连接的 URL。
    • jdbc:mysql://localhost:3306/rbac_system:连接到本地 MySQL 数据库的 rbac_system 数据库。
      • localhost 表示数据库运行在本地。
      • 3306 是 MySQL 的默认端口。
      • rbac_system 是要连接的数据库名称。(我的就是rbac_system,因为之前是根据老师代码数据库名字配置的CREATE DATABASE IF NOT EXISTS rbac_system;)
    • 参数:
      • useUnicode=true:启用 Unicode 支持,确保支持中文或其他语言字符。
      • characterEncoding=utf8:指定字符编码为 UTF-8
      • serverTimezone=Asia/Shanghai:设置服务器的时区为上海,防止时区差异导致时间错误。
  • username 数据库用户名。
    • 需要替换为您实际数据库的用户名,例如 root
  • password 数据库密码。
    • 需要替换为实际密码。
  • driver-class-name JDBC 驱动类。
    • 当前配置为 com.mysql.cj.jdbc.Driver,这是 MySQL 8.x 的驱动类名称。

3. mybatis 配置

mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo
  • mapper-locations
    • 指定 MyBatis 映射文件(*.xml)的位置。
    • classpath:mapper/*.xml:表示映射文件放在项目的 resources/mapper 文件夹中,文件后缀为 .xml
    • MyBatis 映射文件用于定义 SQL 语句和数据库表映射关系。
  • type-aliases-package
    • 指定 MyBatis 中实体类的包路径。
    • com.example.demo:表示实体类位于该包下。(这个是我的包的名字)
    • MyBatis 会自动将该包下的类简化为别名,例如类 User 可直接使用别名 user

总结

这段配置文件实现了以下功能:

  1. 配置了 Spring Boot 应用的运行端口为 28080
  2. 配置了连接本地 MySQL 数据库的相关信息(URL、用户名、密码、驱动)。
  3. 指定了 MyBatis 的映射文件路径和实体类所在的包。

下一步需要的操作

  1. 检查 MySQL 数据库:
    • 确保 MySQL 数据库正在运行,且端口 3306 可用。
    • 确认已创建名为 rbac_system 的数据库。
    • 替换 your_usernameyour_password 为实际的数据库用户名和密码。
  1. 准备 MyBatis 映射文件:
    • resources/mapper 文件夹中放置 MyBatis 的 .xml 映射文件。
    • 确保 .xml 文件中的 SQL 与数据库表结构一致。
  1. 准备实体类:
    • com.example.rbacsystem 包中创建与数据库表对应的实体类。

配置完成后,启动 Spring Boot 项目,即可连接到 MySQL 数据库并使用 MyBatis 执行数据库操作。

记得把pom配置,如下,之后就会由橙色变成蓝色:

在这里插入图片描述

创建 User 实体类

package com.example.demo;import lombok.Data;@Data
public class User {private Integer userId;private String username;private String password;private String email;private String status;
}

创建 Mapper 接口

com.example.demo.mapper 包下,创建 Mapper 接口。

UserMapper.java
package com.example.demo;import com.example.demo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;@Mapper
public interface UserMapper {User getUserById(@Param("userId") Integer userId);User findByUsername(@Param("username") String username);int insertUser(User user);// 其他需要的方法
}

src/main/resources/mapper/ 目录下,创建对应的 XML 映射文件。

UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.rbacsystem.mapper.UserMapper"><resultMap id="UserResultMap" type="com.example.rbacsystem.model.User"><id property="userId" column="user_id"/><result property="username" column="username"/><result property="password" column="password"/><result property="email" column="email"/><result property="status" column="status"/></resultMap><select id="getUserById" resultMap="UserResultMap">SELECT * FROM users WHERE user_id = #{userId}</select><select id="findByUsername" resultMap="UserResultMap">SELECT * FROM users WHERE username = #{username}</select><insert id="insertUser" parameterType="com.example.rbacsystem.model.User">INSERT INTO users (username, password, email, status)VALUES (#{username}, #{password}, #{email}, #{status})</insert><!-- 其他 SQL 映射 -->
</mapper>

注意:

  • namespace 应与 Mapper 接口的全限定名一致。
  • 使用 resultMap 来映射数据库列名与实体类字段名。

创建 Service 层

com.example.rbacsystem.service 包下,创建服务类,处理业务逻辑。

UserService.java

package com.example.rbacsystem.service;import com.example.rbacsystem.mapper.UserMapper;
import com.example.rbacsystem.model.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;@Service
@RequiredArgsConstructor
public class UserService {private final UserMapper userMapper;public User getUserById(Integer userId) {return userMapper.getUserById(userId);}public User findByUsername(String username) {return userMapper.findByUsername(username);}public int createUser(User user) {return userMapper.insertUser(user);}// 其他业务逻辑方法
}

创建 Controller 层

com.example.rbacsystem.controller 包下,创建控制器类,处理 HTTP 请求。

UserController.java

package com.example.rbacsystem.controller;import com.example.rbacsystem.model.User;
import com.example.rbacsystem.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {private final UserService userService;@GetMapping("/{userId}")public User getUserById(@PathVariable Integer userId) {return userService.getUserById(userId);}@PostMapping("/")public String createUser(@RequestBody User user) {int result = userService.createUser(user);return result > 0 ? "User created successfully" : "Failed to create user";}// 其他请求处理方法
}

注意:

  • 使用 @RestController 注解,表示这是一个控制器,并且所有方法都返回 JSON 格式的数据。
  • 请求路径前缀为 /api/users,与前端的 API 请求路径保持一致。

测试接口(暂时不需要做,后端根目录并没有设置,所以测试后应该是如下页面)

在这里插入图片描述

使用 Postman 或浏览器,访问以下 URL,测试后端接口是否正常工作。

  • 获取用户信息:
GET http://localhost:28080/api/users/1

响应示例:

{"userId": 1,"username": "admin","password": "admin123","email": "admin@example.com","status": "enabled"
}
  • 创建新用户:
POST http://localhost:28080/api/users/

请求体(JSON):

{"username": "newuser","password": "newpassword","email": "newuser@example.com","status": "enabled"
}

响应示例:

User created successfully

注意:

  • 确保数据库中存在对应的数据。
  • 在生产环境中,不要将密码以明文形式返回,应进行加密和安全处理。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GTID下复制问题和解决

环境介绍 数据库1主2从&#xff0c;mysql版本是v5.19 表结构 一、主库新增记录&#xff0c;从库提示主键冲突 模拟故障 1&#xff0c; master上关闭 sql_log_bin,删除id 103 后打开 2&#xff0c; 确认此时从库有id103,主库没有 3&#xff0c; master insert id103 主从异常…

C语言初阶【13】——打印一个数的每一位(递归和非递归实现)

1. 题目 打印一个数的每一位 2.分析 首先先实现非递归方式&#xff0c; 以123为例。我们要获取它的每一位&#xff0c; 获取个位数&#xff1a;123 %10 3 获取十位数&#xff1a;123/10 12 之后在 12%10 2&#xff1b; 获取百位数&#xff1a;12/10 1 之后再1%10 1&#x…

webrtc学习----前端推流拉流,局域网socket版,一对多

提示&#xff1a;局域网socket版&#xff0c;一对多 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种实时通讯技术&#xff0c;允许网…

深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223

深入探讨 Go 中的高级表单验证与翻译&#xff1a;Gin 与 Validator 的实践之道 在现代后端开发中&#xff0c;表单验证是保证数据完整性和服务稳定性的核心环节。如何优雅、高效地实现表单验证&#xff0c;同时提供人性化的错误提示&#xff0c;是每位开发者的必修课。在本文中…

单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?

《野狗子》游戏运行时提示dbghelp.dll缺失&#xff1a;原因与解决方案 在畅游《野狗子》这款引人入胜的游戏世界时&#xff0c;突然遭遇“dbghelp.dll缺失”的错误提示&#xff0c;无疑会给玩家的探险之旅蒙上一层阴影。作为一名深耕软件开发领域的从业者&#xff0c;我深知此…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…

Flutter 异步编程简述

1、isolate 机制 1.1 基本使用 Dart 是基于单线程模型的语言。但是在开发当中我们经常会进行耗时操作比如网络请求&#xff0c;这种耗时操作会堵塞我们的代码。因此 Dart 也有并发机制 —— isolate。APP 的启动入口main函数就是一个类似 Android 主线程的一个主 isolate。与…

一键打断线(根据相交点打断)——CAD c# 二次开发

多条相交线根据交点一键打断&#xff0c;如下图&#xff1a; 部分代码如下: finally namespace IFoxDemo; public class Class1 {[CommandMethod("ddx")]public static void Demo(){//"ifox可以了".Print();Database db HostApplicationServices.Workin…

Confluent Cloud Kafka 可观测性最佳实践

Confluent Cloud 介绍 Confluent Cloud 是一个完全托管的 Apache Kafka 服务&#xff0c;提供高可用性和可扩展性&#xff0c;旨在简化数据流处理和实时数据集成。用户可以轻松创建和管理 Kafka 集群&#xff0c;而无需担心基础设施的维护和管理。Confluent Cloud 支持多种数据…

【C++】B2066救援题目分析和解决讲解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af; 题目&#x1f4af; 题目分析每个屋顶计算的元素 &#x1f4af; 思路解析1. **读取输入**2. **计算屋顶时间**3. **结果精确取整** &#x1f4af; 完整解决代码&#x1f4a…

WPS工具栏灰色怎么办

WPS离线不登录&#xff0c;开启工具栏等相关功能 当你在使用WPS的过程中&#xff0c;若因网络问题或其他特殊原因&#xff0c;导致无法登录使用WPS时&#xff0c;可根据以下步骤开启离线兼容模式&#xff0c;开启此模式后&#xff0c;可在未登录的状态下&#xff0c;激活并使用…

反射探针.

一、在unity场景中如何添加反射探针&#xff1f; 可以先添加一个空对象&#xff0c;在空对象的上方添加反射探针组件&#xff08;Reflection Probe&#xff09; 反射探针的类型有&#xff1a;Baked、Custom、Realtime 其中“Baked”反射探针类型&#xff0c;可以将场景中的静态…

SecureCRT汉化版

目录 9.5.1版 8.1.4版 下载链接 SecureCRT 和 SecureFX 是由 VanDyke Software 开发的专业工具&#xff0c;分别专注于安全的终端仿真与文件传输。SecureCRT 提供高效的终端仿真和多协议支持&#xff0c;是网络管理和系统配置的首选工具&#xff1b;SecureFX 则致力于安全的…

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实现CNN-LSSVM…

使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 出现错误的情况 报错&#xff1a; 代码&#xff1a; 报错截图 原因分析 解决方案 方法一 方法二 出现错误的情况 以下是我遇到该错误时遇到的报错和代码&…

【知识】cuda检测GPU是否支持P2P通信及一些注意事项

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 代码流程 先检查所有GPU之间是否支持P2P通信&#xff1b;然后尝试启用GPU之间的P2P通信&#xff1b;再次检查所有GPU之间是否支持P2P通信。 test.cu&…

专栏二十三:Python读取和分析空间数据的经验杂谈

部分情况同样适合单细胞的分析结果 读取数据阶段 1.错误的library_id 包括sc和sq的两种读取方式&#xff0c;大同小异。 理论上有h5数据和spatial文件夹就可以读取成功&#xff0c;并且自动赋予和文件名一样的library_id&#xff0c;例如 slide sq.read.visium("/ho…

《软件设计的哲学》阅读摘要之设计原则

《软件设计的哲学》&#xff08;A Philosophy of Software Design&#xff09;是一本在软件架构与设计领域颇具影响力的书籍&#xff0c;作者 John Ousterhout 在书中分享了诸多深刻且实用的软件设计理念。书中列举的这些设计原则&#xff0c;汇聚了作者丰富的实战经验与深邃的…

Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行

一、部署LDAP 1、安装LDAP yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql systemctl start slapd systemctl enable slapd2、创建第一个管理账号密码&#xff08;设置为ldapadmin&#xff09; slappass…

【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)

Hiヽ(゜▽゜ )&#xff0d;欢迎来到蓝染Aizen的CSDN博客~ &#x1f525; 博客主页&#xff1a; 【✨蓝染 の Blog&#x1f618;】 &#x1f496;感谢大家点赞&#x1f44d; 收藏⭐ 评论✍ 文章目录 MySQL基础篇-多表查询一、多表关系1. 一对多2. 多对多3. 一对一 二、多表查询…