diff --git a/src/main/java/com/example/g8backend/G8BackendApplication.java b/src/main/java/com/example/g8backend/G8BackendApplication.java
new file mode 100644
index 0000000..f94569a
--- /dev/null
+++ b/src/main/java/com/example/g8backend/G8BackendApplication.java
@@ -0,0 +1,13 @@
+package com.example.g8backend;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class G8BackendApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(G8BackendApplication.class, args);
+    }
+
+}
diff --git a/src/main/java/com/example/g8backend/config/MyBatisPlusConfig.java b/src/main/java/com/example/g8backend/config/MyBatisPlusConfig.java
new file mode 100644
index 0000000..07281de
--- /dev/null
+++ b/src/main/java/com/example/g8backend/config/MyBatisPlusConfig.java
@@ -0,0 +1,9 @@
+package com.example.g8backend.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@MapperScan("com.example.g8backend.mapper") // 扫描 Mapper 接口
+public class MyBatisPlusConfig {
+}
diff --git a/src/main/java/com/example/g8backend/controller/UserController.java b/src/main/java/com/example/g8backend/controller/UserController.java
new file mode 100644
index 0000000..0bbcdc6
--- /dev/null
+++ b/src/main/java/com/example/g8backend/controller/UserController.java
@@ -0,0 +1,54 @@
+package com.example.g8backend.controller;
+
+import com.example.g8backend.entity.User;
+import com.example.g8backend.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/users")
+public class UserController {
+
+    @Autowired
+    private IUserService userService;
+
+    // 获取所有用户
+    @GetMapping
+    public List<User> getUsers() {
+        return userService.list();
+    }
+
+    // 通过ID获取用户
+    @GetMapping("/{id}")
+    public User getUserById(@PathVariable Long id) {
+        return userService.getById(id);
+    }
+
+    // 通过用户名获取用户
+    @GetMapping("/name/{name}")
+    public User getUserByName(@PathVariable String name) {
+        return userService.getUserByName(name);
+    }
+
+    // 添加用户
+    @PostMapping
+    public boolean addUser(@RequestBody User user) {
+        System.out.println(user);
+        return userService.save(user);
+    }
+
+    // 修改用户
+    @PutMapping
+    public boolean updateUser(@RequestBody User user) {
+        return userService.updateById(user);
+    }
+
+    // 删除用户
+    @DeleteMapping("/{id}")
+    public boolean deleteUser(@PathVariable Long id) {
+        return userService.removeById(id);
+    }
+}
+
diff --git a/src/main/java/com/example/g8backend/entity/User.java b/src/main/java/com/example/g8backend/entity/User.java
new file mode 100644
index 0000000..f367a4b
--- /dev/null
+++ b/src/main/java/com/example/g8backend/entity/User.java
@@ -0,0 +1,29 @@
+package com.example.g8backend.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("user")  // 指定数据库表名
+public class User {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @TableField
+    private String name;
+
+    @TableField
+    private String email;
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", email='" + email + '\'' +
+                '}';
+    }
+}
diff --git a/src/main/java/com/example/g8backend/mapper/UserMapper.java b/src/main/java/com/example/g8backend/mapper/UserMapper.java
new file mode 100644
index 0000000..65369cd
--- /dev/null
+++ b/src/main/java/com/example/g8backend/mapper/UserMapper.java
@@ -0,0 +1,11 @@
+package com.example.g8backend.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.g8backend.entity.User;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface UserMapper extends BaseMapper<User> {
+    User getUserByName(@Param("name") String name);
+}
diff --git a/src/main/java/com/example/g8backend/service/IUserService.java b/src/main/java/com/example/g8backend/service/IUserService.java
new file mode 100644
index 0000000..98b2810
--- /dev/null
+++ b/src/main/java/com/example/g8backend/service/IUserService.java
@@ -0,0 +1,9 @@
+package com.example.g8backend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.g8backend.entity.User;
+import org.apache.ibatis.annotations.Param;
+
+public interface IUserService extends IService<User> {
+    User getUserByName(@Param("name") String name);
+}
diff --git a/src/main/java/com/example/g8backend/service/UserServiceImpl.java b/src/main/java/com/example/g8backend/service/UserServiceImpl.java
new file mode 100644
index 0000000..2347878
--- /dev/null
+++ b/src/main/java/com/example/g8backend/service/UserServiceImpl.java
@@ -0,0 +1,18 @@
+package com.example.g8backend.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.g8backend.entity.User;
+import com.example.g8backend.mapper.UserMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
+    @Resource
+    private UserMapper userMapper; // 手动注入 UserMapper
+
+    @Override
+    public User getUserByName(String name) {
+        return userMapper.getUserByName(name); // 调用 UserMapper 的自定义 SQL
+    }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..e912ce2
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+spring.datasource.password=050301
+spring.datasource.username=root
+spring.datasource.url=jdbc:mysql://localhost:3306/g8backend
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
\ No newline at end of file
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..e8ffb26
--- /dev/null
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,9 @@
+<?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.example.g8backend.mapper.UserMapper">
+    <select id="getUserByName" resultType="com.example.g8backend.entity.User">
+        SELECT * FROM user WHERE name = #{name}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/test/java/com/example/g8backend/G8BackendApplicationTests.java b/src/test/java/com/example/g8backend/G8BackendApplicationTests.java
new file mode 100644
index 0000000..7fb10ca
--- /dev/null
+++ b/src/test/java/com/example/g8backend/G8BackendApplicationTests.java
@@ -0,0 +1,13 @@
+package com.example.g8backend;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class G8BackendApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}
