# SpringMVC + MyBatisPlus 机试试题 ## 试题一:基础CRUD操作 (40分) **需求**:实现一个简单的学生信息管理系统,包含以下功能: 1. 学生信息的增删改查 2. 按姓名模糊查询 3. 按年龄范围查询 **技术要求**: 1. 使用SpringMVC作为Web框架 2. 使用MyBatisPlus作为ORM框架 4. 返回JSON格式数据 **数据库表结构**: ```sql CREATE TABLE student ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, gender VARCHAR(10), email VARCHAR(100), create_time DATETIME, update_time DATETIME ); ``` **要求实现**: 1. 完成Student实体类、Mapper接口、Service层和Controller层的代码 2. 实现分页查询功能 3. 添加统一的异常处理 ## 试题二:复杂查询与关联操作 (30分) **需求**:在上述基础上增加班级管理功能,并实现以下功能: 1. 学生与班级的多对一关联 2. 查询某个班级下的所有学生 3. 统计每个班级的学生人数 4. 按班级名称和学生姓名联合查询 **数据库表结构**: ```sql CREATE TABLE class ( id BIGINT PRIMARY KEY AUTO_INCREMENT, class_name VARCHAR(100) NOT NULL, teacher_name VARCHAR(50) ); ALTER TABLE student ADD COLUMN class_id BIGINT; ALTER TABLE student ADD CONSTRAINT fk_class FOREIGN KEY (class_id) REFERENCES class(id); ``` **要求实现**: 1. 完成关联关系的配置 2. 使用MyBatisPlus的Wrapper实现复杂查询 3. 实现自定义SQL查询(如统计查询) ## 试题三:事务与缓存 (20分) **需求**: 1. 实现学生转班功能(需要保证事务) ## 试题四:前端交互 (10分) **需求**: 1. 使用Thymeleaf或JSP实现简单的页面交互 2. 通过AJAX调用后端API实现无刷新操作 **要求实现**: 1. 完成学生列表展示页面 2. 实现添加学生的表单提交 3. 实现分页查询的前端交互 ## 评分标准 1. **功能完整性** (40%):所有要求的功能是否实现 2. **代码质量** (30%):代码结构、命名规范、注释等 3. **技术运用** (20%):框架特性的合理使用 4. **性能考虑** (10%):事务、缓存等性能优化措施 ## 提交要求 1. 完整的项目源代码 2. 数据库初始化脚本 3. 简单的API文档或测试用例 4. 项目README,说明如何部署和运行项目 --- **注意**:考生可以在2小时内完成上述试题,建议合理分配时间,从基础功能开始逐步实现。
时间: 2025-05-26 10:52:03 浏览: 78
### SpringMVC与MyBatisPlus结合的机试试题解析
#### 题目背景
在实际开发中,SpringMVC作为前端控制器负责接收请求并分发到业务层处理,而MyBatisPlus则是基于MyBatis的一个增强工具包,提供了更简洁的操作方式以及丰富的功能扩展。两者结合可以快速构建高效的企业级应用。
---
#### 示例题目描述
设计一个简单的图书管理系统,支持以下功能:
1. 添加一本书籍信息。
2. 查询所有书籍信息。
3. 根据ID删除某本书籍。
4. 更新某本书的信息。
5. 支持分页查询书籍列表。
要求使用SpringMVC和MyBatisPlus完成该系统的后端逻辑实现,并提供完整的代码结构说明。
---
#### 技术栈分析
- **SpringMVC**: 负责前后端交互,定义Controller接口用于接收HTTP请求。
- **MyBatisPlus**: 提供持久化操作能力,简化CRUD操作流程。
- 数据库表设计如下:
```sql
CREATE TABLE `book` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` VARCHAR(255) DEFAULT NULL COMMENT '书名',
`author` VARCHAR(255) DEFAULT NULL COMMENT '作者',
`price` DECIMAL(10, 2) DEFAULT NULL COMMENT '价格',
PRIMARY KEY (`id`)
);
```
---
#### 实现代码
##### 1. Maven依赖配置
在项目的pom.xml文件中引入必要的依赖项。
```xml
<dependencies>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.9</version>
</dependency>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- Spring Boot Starter JDBC (可选) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
```
##### 2. Controller层实现
创建BookController类来处理HTTP请求。
```java
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private IBookService bookService;
// 增加书籍
@PostMapping
public String addBook(@RequestBody Book book) {
boolean success = bookService.save(book);
return success ? "Success" : "Failed";
}
// 获取所有书籍
@GetMapping
public List<Book> getAllBooks() {
return bookService.list();
}
// 删除书籍
@DeleteMapping("/{id}")
public String deleteBookById(@PathVariable Long id) {
boolean success = bookService.removeById(id);
return success ? "Deleted Successfully" : "Deletion Failed";
}
// 修改书籍
@PutMapping
public String updateBook(@RequestBody Book book) {
boolean success = bookService.updateById(book);
return success ? "Updated Successfully" : "Update Failed";
}
// 分页查询
@GetMapping("/page")
public IPage<Book> getBooksByPage(@RequestParam int currentPage,
@RequestParam int pageSize) {
Page<Book> page = new Page<>(currentPage, pageSize);
return bookService.page(page);
}
}
```
##### 3. Service层实现
利用MyBatisPlus自动生成的基础服务接口`IService<T>`及其默认实现`ServiceImpl<M,T>`。
```java
@Service
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements IBookService {}
```
##### 4. Mapper层实现
通过继承BaseMapper<T>来自动生成基础方法。
```java
@Mapper
public interface BookMapper extends BaseMapper<Book> {}
```
##### 5. Entity实体类
定义Book对象对应的字段。
```java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private Long id;
private String name;
private String author;
private BigDecimal price;
}
```
##### 6. 配置数据源
在application.properties或yml文件中配置数据库连接信息。
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.mapper-locations=classpath:mapper/*.xml
```
---
#### 测试用例
可以通过Postman或其他API测试工具验证各接口的功能是否正常工作。
| 请求路径 | 方法 | 参数 | 返回结果 |
|-----------------------|--------|-------------------------|----------------|
| /books | POST | {"name":"Java","author":"James", "price":79.99} | Success/Failure |
| /books | GET | | 所有书籍列表 |
| /books/{id} | DELETE | {id}=1 | Deleted/Not Found |
| /books/page | GET | currentPage=1&pageSize=10| 分页后的书籍列表 |
---
### 注意事项
1. 在使用`${}`时需要注意SQL注入风险[^1],推荐优先采用`#{}`占位符绑定参数[^1]。
2. 如果返回复杂的数据模型,则需指定`resultMap`而非简单类型的`resultType`[^1]。
3. 若要打印执行的SQL语句,可在日志级别设置为DEBUG模式或者调整MyBatis的日志框架配置[^1]。
---
阅读全文
相关推荐



