diff --git a/build.gradle b/build.gradle
index c15e0a975f672d578dfc4f89b5a75547be481632..2d1c437e08d0ada1919e969a094306fa33877819 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,8 +29,10 @@ dependencies {
 	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
 	//from https://mariadb.com/kb/en/java-connector-using-gradle/
 
-	implementation 'org.mariadb.jdbc:mariadb-java-client:3.5.1'
+	implementation 'org.mariadb.jdbc:mariadb-java-client:3.3.3'
 	// implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
+	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
+	implementation 'org.mariadb.jdbc:mariadb-java-client'
 	
 	implementation 'org.springframework.boot:spring-boot-starter-validation'
     implementation 'org.springframework.boot:spring-boot-starter-security'
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/AppConfig.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/AppConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1ef1ec9364829798df507a92740b6aab6a75efa
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/AppConfig.java
@@ -0,0 +1,49 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class AppConfig {
+    @Bean
+    public UserService userService(){
+        return new UserService() {
+            @Override
+            public List<userdetails> getAllUsers() {
+                return null;
+            }
+
+            @Override
+            public userdetails getUserById(Long id) {
+                return null;
+            }
+
+            @Override
+            public userdetails getUserByEmail(String email) {
+                return null;
+            }
+
+            @Override
+            public List<userdetails> getUsersByUsername(String username) {
+                return null;
+            }
+
+            @Override
+            public void addUser(userdetails user) {
+
+            }
+
+            @Override
+            public void updateUser(userdetails user) {
+
+            }
+
+            @Override
+            public void deleteUser(Long id) {
+
+            }
+        };
+    }
+}
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDao.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..2fb88b6c518ada53ec0889023500110d34af13e1
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDao.java
@@ -0,0 +1,22 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+import java.util.List;
+
+// 定义 UserDao 接口
+public interface UserDao {
+    // 获取所有用户详情
+    List<userdetails> getAllUsers();
+    // 根据 ID 获取用户详情
+    userdetails getUserById(Long id);
+    // 根据用户名获取用户详情
+    userdetails getUserByUsername(String username);
+    // 添加用户
+    void addUser(userdetails user);
+    // 更新用户信息
+    void updateUser(userdetails user);
+    // 删除用户
+    void deleteUser(Long id);
+}
+
+
+
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDaoImpl.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDaoImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa167df3f21ba44ea99a035c386e517432dd3fc1
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDaoImpl.java
@@ -0,0 +1,86 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+import java.util.List;
+
+
+@Repository
+public class UserDaoImpl implements UserDao {
+    private final JdbcTemplate jdbc;
+    private RowMapper<userdetails> userdetailsMapper;
+
+
+    @Autowired
+    public UserDaoImpl(JdbcTemplate aJdbc) {
+        this.jdbc = aJdbc;
+        // 设置 RowMapper
+        setUserdetailsMapper();
+    }
+
+    // 设置 RowMapper,用于将 ResultSet 转换为 userdetails 对象
+    private void setUserdetailsMapper() {
+        userdetailsMapper = (rs, i) -> new userdetails(
+                rs.getLong("id"),
+                rs.getString("email"),
+                rs.getString("password"),
+                rs.getString("username"),
+                rs.getString("role")
+        );
+    }
+
+    @Override
+    public List<userdetails> getAllUsers() {
+        // 查询所有用户
+        String sql = "SELECT * FROM userdetails";
+        List<userdetails>users=jdbc.query(sql,userdetailsMapper);
+        return users;
+    }
+
+    @Override
+    public userdetails getUserById(Long id) {
+        // 根据 ID 查询用户
+        String sql = "SELECT * FROM userdetails WHERE id = ?";
+        return jdbc.queryForObject(sql, userdetailsMapper, id);
+    }
+
+    @Override
+    public userdetails getUserByUsername(String username) {
+        return null;
+    }
+
+
+    @Override
+    public void addUser(userdetails user) {
+        // 插入新用户
+        String sql = "INSERT INTO userdetails (email, username, password, role) VALUES (?, ?, ?, ?)";
+        jdbc.update(sql,
+                user.getEmail(),
+                user.getPassword(),
+                user.getUsername(),
+                user.getRole()
+        );
+    }
+
+    @Override
+    public void updateUser(userdetails user) {
+        // 更新用户信息
+        String sql = "UPDATE userdetails SET email = ?, username = ?, password = ?, role = ? WHERE id = ?";
+        jdbc.update(sql,
+                user.getEmail(),
+                user.getPassword(),
+                user.getUsername(),
+                user.getRole(),
+                user.getId()
+        );
+    }
+
+    @Override
+    public void deleteUser(Long id) {
+        // 删除用户
+        String sql = "DELETE FROM userdetails WHERE id = ?";
+        jdbc.update(sql, id);
+    }
+}
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDetailController.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDetailController.java
new file mode 100644
index 0000000000000000000000000000000000000000..83f9f66aa2dc2b1dbac6aa6d08955f36b4c41a3b
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserDetailController.java
@@ -0,0 +1,52 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+@RequestMapping("/detail")
+@RestController()
+public class UserDetailController {
+    @Autowired
+    private UserService userService;
+
+    // 使用 @Autowired 进行依赖注入(构造函数注入)
+    @Autowired
+    public UserDetailController(UserService userService) {
+        this.userService = userService;
+    }
+
+    // 获取所有用户列表
+    @GetMapping("/users")
+    public List<userdetails> getAllUsers() {
+        List<userdetails>users=userService.getAllUsers();
+        return users;
+    }
+
+    // 通过用户 ID 获取用户详情
+    @GetMapping("/{id}")
+    public userdetails getUserById(@PathVariable Long id) {
+        return userService.getUserById(id);
+    }
+
+    // 添加用户
+    @PostMapping
+    public void addUser(@RequestBody userdetails user) {
+        userService.addUser(user);
+    }
+
+    // 更新用户信息
+    @PutMapping("/{id}")
+    public void updateUser(@PathVariable Long id, @RequestBody userdetails user) {
+        userService.updateUser(user);
+    }
+
+    // 删除用户
+    @DeleteMapping("/{id}")
+    public void deleteUser(@PathVariable Long id) {
+        userService.deleteUser(id);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..c26e09bf3e1876d30f6b73425f2808577ed8c03a
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserService.java
@@ -0,0 +1,26 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+
+import java.util.List;
+
+public interface UserService {
+    // 获取所有用户
+    List<userdetails> getAllUsers();
+
+    // 通过 ID 获取用户
+    userdetails getUserById(Long id);
+
+    // 通过邮箱获取用户
+    userdetails getUserByEmail(String email);
+
+    List<userdetails> getUsersByUsername(String username);
+
+    // 添加用户
+    void addUser(userdetails user);
+
+    void updateUser(userdetails user);
+
+    void deleteUser(Long id);
+
+    //void updateUser(Long id);
+}
\ No newline at end of file
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed9870f50b5a2bcd8f37503412c58a5484481973
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/UserServiceImpl.java
@@ -0,0 +1,55 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+    private final UserDao userDao;
+
+    @Autowired
+    public UserServiceImpl(UserDao userDao) {
+        this.userDao = userDao;
+    }
+
+    @Override
+    public List<userdetails> getAllUsers() {
+        //return userDao.getAllUsers();
+
+        List<userdetails> users = userDao.getAllUsers(); // 调用 DAO 层方法
+        return users;
+    }
+
+    @Override
+    public userdetails getUserById(Long id) {
+        return userDao.getUserById(id);  // 根据 ID 获取用户
+    }
+
+    @Override
+    public userdetails getUserByEmail(String email) {
+        return null;
+    }
+
+
+    @Override
+    public List<userdetails> getUsersByUsername(String username) {
+        return userDao.getAllUsers();
+    }
+
+    @Override
+    public void addUser(userdetails user) {
+        userDao.addUser(user);  // 添加新用户
+    }
+
+    @Override
+    public void updateUser(userdetails user) {
+        userDao.updateUser(user);  // 更新用户信息
+    }
+
+    @Override
+    public void deleteUser(Long id) {
+        userDao.deleteUser(id);  // 删除用户
+    }
+}
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userdetails.java b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userdetails.java
new file mode 100644
index 0000000000000000000000000000000000000000..672bd2445f629352191251acc5e95f91b276f83c
--- /dev/null
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/Userdetail/userdetails.java
@@ -0,0 +1,21 @@
+package uk.ac.cf.spring.demo.sports.Userdetail;
+
+
+    import lombok.AllArgsConstructor;
+    import lombok.Data;
+    import lombok.NoArgsConstructor;
+    import jakarta.persistence.Entity;
+    import jakarta.persistence.Id;
+
+    @Entity
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public class userdetails {
+        @Id
+        private long id;
+        private String email;
+        private String password;
+        private String username;
+        private String role;
+    }
\ No newline at end of file
diff --git a/src/main/java/uk/ac/cf/spring/demo/sports/security/SecurityConfig.java b/src/main/java/uk/ac/cf/spring/demo/sports/security/SecurityConfig.java
index e401b0ff6a5f35c377ab513f4f56e65afceddf82..78375adfecd8616f7f27307ecd807ecee584005b 100644
--- a/src/main/java/uk/ac/cf/spring/demo/sports/security/SecurityConfig.java
+++ b/src/main/java/uk/ac/cf/spring/demo/sports/security/SecurityConfig.java
@@ -33,6 +33,8 @@ public class SecurityConfig {
             "/rankings/**",
             "/uploads",            //images
             "/uploads/**",
+            "/detail/users",
+            "/html/UserCenter.html",
 
     };
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index bf9a6849befaab87faf8efb43582fe533f26be54..2af2bd63c795083477e3700dd97a07d22bd02ac3 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -38,3 +38,6 @@ INSERT INTO ranking (user_id,username,sport, wins) VALUES
                                                 (3, 'xzc','TableTennis', 10),
                                                 (2, 'xx','TableTennis', 4);
 
+
+INSERT INTO userdetails(id, email, password, username, role) VALUES
+                                                 (1,'example@163.com','123','John','USER');
\ No newline at end of file
diff --git a/src/main/resources/static/html/UserCenter.html b/src/main/resources/static/html/UserCenter.html
index b920bc68c24302e6cc0cffc056afd9cedd3d9bb9..5a8e9f513d26ef1d8ef470608611f04627ab8b69 100644
--- a/src/main/resources/static/html/UserCenter.html
+++ b/src/main/resources/static/html/UserCenter.html
@@ -35,6 +35,7 @@
     </tbody>
 </table>
 <div id="footer-container"></div>
+<script src="/js/UserCenter.js"></script>
 <script src="/js/navBar.js"></script>
 <script src="/js/footer.js"></script>
 <script>
diff --git a/src/main/resources/static/js/UserCenter.js b/src/main/resources/static/js/UserCenter.js
index 5a1bef3a6200a405aa4b62f210ef7da6afedb037..b7d222778414e6f99df4ec586b1f25e1bd5a2fb3 100644
--- a/src/main/resources/static/js/UserCenter.js
+++ b/src/main/resources/static/js/UserCenter.js
@@ -1,15 +1,14 @@
 // userTable.js
 
-// 动态加载用户数据
-async function loadUsers(id) {
+window.onload = function() {
+    loadUsers();
+};
+async function loadUsers() {
     try {
-        const response = await fetch('/api/users/${id}'); // 确保后端提供了此 API
-        if (!response.ok) {
-            throw new Error(`HTTP error! Status: ${response.status}`);
-        }
-
+        const response = await fetch('/detail/users');
         const users = await response.json();
 
+
         // 获取表格的 tbody 元素
         const tbody = document.querySelector('tbody');
         tbody.innerHTML = ''; // 清空旧的数据
@@ -19,8 +18,8 @@ async function loadUsers(id) {
             const row = document.createElement('tr');
             row.innerHTML = `
                 <td>${user.id}</td>
-                <td>${user.username}</td>
                 <td>${user.email}</td>
+                <td>${user.username}</td>
                 <td>
                     <a href="/users/edit/${user.id}">Edit</a>
                     <a href="/users/delete/${user.id}">Delete</a>