获取分类功能

Change-Id: I1da40392ce6165c931a534475c573fb417a2767c
diff --git a/src/main/java/com/pt5/pthouduan/controller/CategoryController.java b/src/main/java/com/pt5/pthouduan/controller/CategoryController.java
new file mode 100644
index 0000000..ec013c3
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/controller/CategoryController.java
@@ -0,0 +1,24 @@
+package com.pt5.pthouduan.controller;
+
+import com.pt5.pthouduan.entity.Category;
+import com.pt5.pthouduan.service.CategoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/categories")
+@CrossOrigin
+public class CategoryController {
+    @Autowired
+    private CategoryService categoryService;
+
+    @GetMapping
+    public List<Category> getAllCategories() {
+        return categoryService.getAllCategories();
+    }
+}
diff --git a/src/main/java/com/pt5/pthouduan/entity/Category.java b/src/main/java/com/pt5/pthouduan/entity/Category.java
index c338fbb..e134092 100644
--- a/src/main/java/com/pt5/pthouduan/entity/Category.java
+++ b/src/main/java/com/pt5/pthouduan/entity/Category.java
@@ -7,7 +7,7 @@
 
 /**
  * <p>
- * 
+ * 分类表
  * </p>
  *
  * @author ljx
@@ -21,10 +21,20 @@
     @TableId("categoryid")
     private Integer categoryid;
 
-    private Integer categorytype;
+    private String category_name;  // 数据库列名
 
-    private String categoryName;
+    private String category_description;  // 数据库列名
 
+    // 构造方法
+    public Category() {}
+
+    public Category(Integer categoryid, String category_name, String category_description) {
+        this.categoryid = categoryid;
+        this.category_name = category_name;
+        this.category_description = category_description;
+    }
+
+    // Getter 和 Setter 方法(遵循JavaBean规范)
     public Integer getCategoryid() {
         return categoryid;
     }
@@ -33,28 +43,28 @@
         this.categoryid = categoryid;
     }
 
-    public Integer getCategorytype() {
-        return categorytype;
+    public String getCategory_name() {  // 注意方法名必须和属性名一致
+        return category_name;
     }
 
-    public void setCategorytype(Integer categorytype) {
-        this.categorytype = categorytype;
+    public void setCategory_name(String category_name) {  // 注意方法名必须和属性名一致
+        this.category_name = category_name;
     }
 
-    public String getCategoryName() {
-        return categoryName;
+    public String getCategory_description() {
+        return category_description;
     }
 
-    public void setCategoryName(String categoryName) {
-        this.categoryName = categoryName;
+    public void setCategory_description(String category_description) {
+        this.category_description = category_description;
     }
 
     @Override
     public String toString() {
         return "Category{" +
-        "categoryid = " + categoryid +
-        ", categorytype = " + categorytype +
-        ", categoryName = " + categoryName +
-        "}";
+                "categoryid=" + categoryid +
+                ", category_name='" + category_name + '\'' +  // 修正拼写错误
+                ", category_description='" + category_description + '\'' +  // 修正字段名
+                '}';
     }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/CategoryMapper.java b/src/main/java/com/pt5/pthouduan/mapper/CategoryMapper.java
index fac2a81..5aba81d 100644
--- a/src/main/java/com/pt5/pthouduan/mapper/CategoryMapper.java
+++ b/src/main/java/com/pt5/pthouduan/mapper/CategoryMapper.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -14,5 +16,5 @@
  */
 @Mapper
 public interface CategoryMapper extends BaseMapper<Category> {
-
+    List<Category> getAllCategories();
 }
diff --git a/src/main/java/com/pt5/pthouduan/service/CategoryService.java b/src/main/java/com/pt5/pthouduan/service/CategoryService.java
new file mode 100644
index 0000000..6eb2efe
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/CategoryService.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.service;
+
+import com.pt5.pthouduan.entity.Category;
+
+import java.util.List;
+
+public interface CategoryService {
+    List<Category> getAllCategories();
+}
diff --git a/src/main/java/com/pt5/pthouduan/service/impl/CategoryServiceImp.java b/src/main/java/com/pt5/pthouduan/service/impl/CategoryServiceImp.java
new file mode 100644
index 0000000..a98507b
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/impl/CategoryServiceImp.java
@@ -0,0 +1,19 @@
+package com.pt5.pthouduan.service.impl;
+
+import com.pt5.pthouduan.entity.Category;
+import com.pt5.pthouduan.mapper.CategoryMapper;
+import com.pt5.pthouduan.service.CategoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CategoryServiceImp implements CategoryService {
+    @Autowired
+    private CategoryMapper categoryMapper;
+    @Override
+    public List<Category> getAllCategories() {
+        return categoryMapper.getAllCategories();
+    }
+}
diff --git a/src/main/resources/mapper/xml/CategoryMapper.xml b/src/main/resources/mapper/xml/CategoryMapper.xml
new file mode 100644
index 0000000..7793c47
--- /dev/null
+++ b/src/main/resources/mapper/xml/CategoryMapper.xml
@@ -0,0 +1,28 @@
+<?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.pt5.pthouduan.mapper.CategoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <!-- 定义结果映射 -->
+    <resultMap id="CategoryResultMap" type="com.pt5.pthouduan.entity.Category">
+        <id property="categoryid" column="categoryid"/>
+        <result property="category_name" column="category_name"/>
+        <result property="category_description" column="category_description"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        categoryid, category_name, category_description
+    </sql>
+    <!-- 查询所有分类 -->
+    <select id="getAllCategories" resultMap="CategoryResultMap">
+        SELECT
+            categoryid,
+            category_name,
+            category_description
+        FROM
+            category
+    </select>
+
+</mapper>
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/CategoryControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/CategoryControllerTest.java
index 2c375db..002cfdb 100644
--- a/src/test/java/com/pt5/pthouduan/ControllerTest/CategoryControllerTest.java
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/CategoryControllerTest.java
@@ -1,2 +1,58 @@
-package com.pt5.pthouduan.ControllerTest;public class CategoryControllerTest {
+package com.pt5.pthouduan.ControllerTest;
+
+import com.pt5.pthouduan.controller.CategoryController;
+import com.pt5.pthouduan.entity.Category;
+import com.pt5.pthouduan.service.CategoryService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+public class CategoryControllerTest {
+
+    private MockMvc mockMvc;
+
+    @Mock
+    private CategoryService categoryService;
+
+    @InjectMocks
+    private CategoryController categoryController;
+
+    @BeforeEach
+    public void setUp() {
+        MockitoAnnotations.openMocks(this);
+        mockMvc = MockMvcBuilders.standaloneSetup(categoryController).build();
+    }
+
+    @Test
+    public void testGetAllCategories() throws Exception {
+        // 准备模拟数据
+        Category category1 = new Category();
+        category1.setCategoryid(1);
+        category1.setCategory_name("电子产品");
+
+        Category category2 = new Category();
+        category2.setCategoryid(2);
+        category2.setCategory_name("服装");
+
+        List<Category> categories = Arrays.asList(category1, category2);
+
+        // 模拟 service 行为
+        when(categoryService.getAllCategories()).thenReturn(categories);
+
+        // 执行请求并验证结果
+        mockMvc.perform(get("/categories"))
+                .andExpect(status().isOk());
+    }
 }