java置顶这是表结构 CREATE TABLE "public"."hy_knowledge" ( "id" int4 NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 ), "type" int4, "upload_time" timestamp(6), "refer" varchar(255) COLLATE "pg_catalog"."default", "poster" varchar(255) COLLATE "pg_catalog"."default", "file_name" varchar(255) COLLATE "pg_catalog"."default", "file_path" varchar(255) COLLATE "pg_catalog"."default", "top" int4, "top_time" timestamp(6), "change_time" timestamp(6) ) ; ALTER TABLE "public"."hy_knowledge" OWNER TO "postgres"; COMMENT ON COLUMN "public"."hy_knowledge"."type" IS '类型'; COMMENT ON COLUMN "public"."hy_knowledge"."upload_time" IS '上传时间'; COMMENT ON COLUMN "public"."hy_knowledge"."top_time" IS '置顶时间';用的springboot 使用了@Data注解 @Service @RestControl 并且用的mybaties
时间: 2025-05-27 16:33:15 浏览: 13
### Spring Boot 中使用 `@Data`、`@Service`、`@RestController` 和 MyBatis 实现 `hy_knowledge` 表的置顶功能
#### 1. 配置文件设置
在项目的 `application.properties` 或 `application.yml` 文件中,配置数据库连接信息和 MyBatis 的基础属性。以下是基于 `application.properties` 的配置示例:
```properties
server.port=8089
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=UTC
spring.datasource.username=root
spring.datasource.password=mysql123
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.example.mapper=debug
```
以上配置定义了数据源驱动程序、URL、用户名密码等必要参数,并启用了下划线到驼峰命名法的自动映射[^1]。
#### 2. 创建实体类并使用 `@Data`
为了简化 getter/setter 方法的编写,可以利用 Lombok 提供的 `@Data` 注解自动生成这些方法。假设 `hy_knowledge` 表有如下字段:`id`, `title`, `content`, `is_top` (布尔型表示是否置顶),对应的实体类可定义为:
```java
import lombok.Data;
@Data
public class Knowledge {
private Integer id;
private String title;
private String content;
private Boolean isTop; // 对应数据库中的 is_top 字段
}
```
通过 `@Data` 注解,Lombok 自动生成了必要的构造函数、getter 和 setter 方法,从而减少了样板代码[^5]。
#### 3. Mapper 接口设计
创建一个用于操作 `hy_knowledge` 表的 Mapper 接口,其中包含实现置顶逻辑的方法。例如:
```java
package com.example.mapper;
import com.example.model.Knowledge;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
@Repository
public interface KnowledgeMapper {
@Update("UPDATE hy_knowledge SET is_top = #{isTop} WHERE id = #{id}")
int updateIsTop(Integer id, boolean isTop);
}
```
这里使用了 MyBatis 的注解方式直接书写 SQL 更新语句,更新指定 ID 记录的 `is_top` 值。
#### 4. Service 层封装业务逻辑
引入 `@Service` 注解标记服务层组件,在此处理具体的业务需求。例如:
```java
package com.example.service;
import com.example.mapper.KnowledgeMapper;
import com.example.model.Knowledge;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class KnowledgeService {
@Autowired
private KnowledgeMapper knowledgeMapper;
public int setKnowledgeAsTop(Integer id, boolean isTop) {
return knowledgeMapper.updateIsTop(id, isTop);
}
}
```
该方法调用 Mapper 完成对记录置顶状态的修改[^3]。
#### 5. Controller 曝露 RESTful API
最后构建控制器暴露外部访问接口,采用 `@RestController` 来返回 JSON 数据响应客户端请求。例如:
```java
package com.example.controller;
import com.example.service.KnowledgeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/knowledge")
public class KnowledgeController {
@Autowired
private KnowledgeService knowledgeService;
@PutMapping("/{id}/top/{status}")
public String toggleTop(@PathVariable Integer id, @PathVariable boolean status) {
int result = knowledgeService.setKnowledgeAsTop(id, status);
return result > 0 ? "Success" : "Failed";
}
}
```
上述代码片段实现了路径 `/knowledge/{id}/top/{status}` 的 PUT 请求处理器,允许用户通过 URL 参数控制某条知识记录的置顶状态[^2]。
---
####
阅读全文
相关推荐









