创建一个新项目:
打开 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_username
和your_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 语句和数据库表映射关系。
- 指定 MyBatis 映射文件(
type-aliases-package
:
- 指定 MyBatis 中实体类的包路径。
com.example.demo
:表示实体类位于该包下。(这个是我的包的名字)- MyBatis 会自动将该包下的类简化为别名,例如类
User
可直接使用别名user
。
总结
这段配置文件实现了以下功能:
- 配置了 Spring Boot 应用的运行端口为
28080
。 - 配置了连接本地 MySQL 数据库的相关信息(URL、用户名、密码、驱动)。
- 指定了 MyBatis 的映射文件路径和实体类所在的包。
下一步需要的操作
- 检查 MySQL 数据库:
- 确保 MySQL 数据库正在运行,且端口
3306
可用。 - 确认已创建名为
rbac_system
的数据库。 - 替换
your_username
和your_password
为实际的数据库用户名和密码。
- 确保 MySQL 数据库正在运行,且端口
- 准备 MyBatis 映射文件:
- 在
resources/mapper
文件夹中放置 MyBatis 的.xml
映射文件。 - 确保
.xml
文件中的 SQL 与数据库表结构一致。
- 在
- 准备实体类:
- 在
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
注意:
- 确保数据库中存在对应的数据。
- 在生产环境中,不要将密码以明文形式返回,应进行加密和安全处理。