init

Change-Id: I42ce9491614d73adf28295781b319809d1969b82
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() {
+    }
+
+}