赞
踩
# 创建数据库 create database if not exists student; use student; create table student( id int auto_increment primary key , name varchar(20) comment '姓名', account varchar(10) comment '账号', password varchar(20) comment '密码', phone varchar(11) comment '联系方式', age int comment '年龄', gender varchar(1) comment '性别', stu_class varchar(10) comment '班级', id_deleted int default 0 comment '是否删除' )comment '学生信息表';
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.0</version> </parent> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <druid.version>1.2.1</druid.version> <mysql.version>8.0.32</mysql.version> <mybatisPlus.version>3.5.4</mybatisPlus.version> <knife4j.version>4.4.0</knife4j.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatisPlus.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> </dependencies>
@SpringBootApplication
public class knife4jApplication {
public static void main(String[] args) {
SpringApplication.run(knife4jApplication.class,args);
}
}
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/student
username: root
password: 311412
type: com.alibaba.druid.pool.DruidDataSource
mybatis-plus:
configuration:
map-underscore-to-camel-case: true #开启驼峰命名与下滑线命名转换
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #查看日记
@Data @Builder @TableName("user") public class User { @TableId(type = IdType.AUTO) private Integer id; private String account; @TableField("nick_name") private String nickName; private String name; private String password; private String phone; private String gender; private Integer age; @TableLogic @TableField("id_delete") private Integer idDelete; }
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
}
编写service接口使其继承IService,编写service实现类使其实现service接口,继承ServiceImpl
public interface StudentService extends IService<Student> {
}
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {
}
返回结果这里以json形式,code值里面0代表成功,1代表失败
{
"code": 0,
"data": [],
"message": null
}
@Data public class Result <T>{ private Integer code; //0代表成功,1代表失败 private T data; private String message; public static <T> Result<T> success(T data){ Result<T> result = new Result<>(); result.setCode(0); result.setData(data); return result; } public static <T> Result<T> success(){ Result<T> result = new Result<>(); result.setCode(0); return result; } public static <T> Result<T> error(String message){ Result<T> result = new Result<>(); result.setMessage(message); result.setCode(0); return result; } }
controller层代码,采取REST风格进行开发
REST(Representational State Transfer)风格的开发是一种用于网络应用的架构风格,广泛用于构建灵活、可扩展的Web服务。RESTful服务通常使用HTTP协议的标准方法来执行增删改查(CRUD)操作:
创建(Create) - 使用POST方法
读取(Read) - 使用GET方法
更新(Update) - 使用PUT或PATCH方法
删除(Delete) - 使用DELETE方法
@RestController
@RequestMapping("/student")
@Slf4j
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("/findAll")
public Result<List<Student>> findAll(){
log.info("查询所有学生信息");
List<Student> list = studentService.list();
return Result.success(list);
}
}
前提要求:jdk>=17,springboot3
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs enabled: true # group-configs: # - group: "user" # paths-to-match: '/user/**' # packages-to-scan: 'com.nongda.controller' # - group: "manager" # paths-to-match: '/manager/**' # packages-to-scan: 'com.nongda.controller' knife4j: enable: true setting: language: zh_cn basic: enable: true username: root password: 311412
@Configuration //@EnableKnife4j public class Knife4jConfig { @Bean public OpenAPI openAPI(){ return new OpenAPI() .info(new Info() .title("knife4j测试的接口文档") .description("这是基于knife4j-openapi3-jakarta-spring-boot-starter的接口文档") .version("1.0") .contact(new Contact() .name("zbk") .email("891276734@qq.com"))) .externalDocs(new ExternalDocumentation() .description("springboot基础框架") .url("http://localhost:8080")); } // 下面是分组 @Bean public GroupedOpenApi groupedOpenApi2(){ return GroupedOpenApi.builder() .group("学生管理") .pathsToMatch("/student/**") .build(); } }
配置完成后运行项目,访问http://localhost:8080/doc.html
springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs enabled: true # group-configs: # - group: "user" # paths-to-match: '/user/**' # packages-to-scan: 'com.nongda.controller' # - group: "manager" # paths-to-match: '/manager/**' # packages-to-scan: 'com.nongda.controller' knife4j: enable: true setting: language: zh_cn basic: enable: true username: root password: 311412
@Configuration //@EnableKnife4j public class Knife4jConfig { @Bean public OpenAPI openAPI(){ return new OpenAPI() .info(new Info() // 设置标题 .title("knife4j测试的接口文档") // 设置简述 .description("这是基于knife4j-openapi3-jakarta-spring-boot-starter的接口文档") // 设置版本 .version("1.0") // 设置联系方式 .contact(new Contact() .name("zbk") .email("891276734@qq.com"))) .externalDocs(new ExternalDocumentation() .description("springboot基础框架") .url("http://localhost:8080")); } // 下面是分组 @Bean public GroupedOpenApi groupedOpenApi2(){ return GroupedOpenApi.builder() // 设置分组名称 .group("学生管理") // 分组url .pathsToMatch("/student/**") // 该分组所在的包 .packagesToScan("com.nongda.controller") .build(); } }
@GetMapping("/findAll")
@Operation(summary = "查询所有学生")
public Result<List<Student>> findAll(){
log.info("查询所有学生信息");
List<Student> list = studentService.list();
return Result.success(list);
}
效果:
@Data
@Builder
@TableName(value = "student")
public class Student {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private String account;
private String password;
private String phone;
private Integer age;
private String gender;
@TableField("stu_class")
private String stuClass;
}
设置注解后:
@Data @Builder @TableName(value = "student") public class Student { @TableId(type = IdType.AUTO) @Hidden//设置在文档里面隐藏 private Integer id; @Schema(name = "姓名") private String name; @Schema(name = "账号") private String account; @Schema(name = "密码") private String password; @Schema(name = "联系方式") private String phone; @Schema(name = "年龄") private Integer age; @Schema(name = "性别") private String gender; @TableField("stu_class") @Schema(name = "班级") private String stuClass; }
@Parameters :对Controller 方法的参数进行参数描述
@RestController @RequestMapping("/student") @Slf4j @Tag(name = "学生管理模块") public class StudentController { @Autowired private StudentService studentService; @GetMapping("/findAll") @Operation(summary = "查询所有学生") public Result<List<Student>> findAll(){ log.info("查询所有学生信息"); List<Student> list = studentService.list(); return Result.success(list); } @PostMapping @Operation(summary = "添加学生信息") public Result add(@RequestBody Student student){ log.info(student.toString()); boolean save = studentService.save(student); return save?Result.success():Result.error("添加失败"); } @PutMapping("/update/{id}") @Operation(summary = "修改学生信息") public Result update(@RequestBody Student student,@PathVariable Integer id){ log.info(student.toString()); log.info("id是:{}",id); student.setId(id); boolean flag = studentService.updateById(student); return flag?Result.success():Result.error("修改失败"); } @DeleteMapping("/{id}") @Operation(summary = "删除学生信息") public Result delete(@PathVariable Integer id){ log.info("id是:{}",id); boolean flag = studentService.removeById(id); return flag?Result.success():Result.error("删除失败"); } }
ui效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。