如何利用Spring Boot与MyBatis-Plus实现前端数据交互与数据库操作
在开发过程中,前端常通过URL参数传递数据至后端服务,例如http://localhost:8080/user/checkUsernameUsed?username=${registUser.username}。本文将解析如何构建Spring Boot应用接收并处理此类请求。
项目架构设计
标准Java后端通常采用分层架构处理数据流:Controller层负责接口交互,Service层处理业务逻辑,DAO层执行数据库操作。实际开发中,MyBatis-Plus将DAO层拆分为Mapper接口与XML映射文件,配合实体类完成数据库交互。
项目目录结构包含:
- controller:接口控制层
- service:业务逻辑层
- mapper:数据库操作层
- model:数据模型
- common/config:公共组件
- config:系统配置
- constant:常量定义
接口开发实践
针对URL路径处理,需在配置文件中定义服务端口:
server.port=8888
通过注解配置接口路由:
@RestController
@RequestMapping("/user")
public class UserCheckController {
@Autowired
UserValidationService validationService;
@PutMapping("/checkUsername")
public Response handleValidation(@RequestBody UserInput userInput){
return validationService.validateUser(userInput);
}
}
前端请求示例:
const response = await fetch('/user/checkUsername', {
method: 'PUT',
body: JSON.stringify({username: 'testUser'})
});
业务逻辑实现
定义服务接口规范:
public interface UserValidationService {
Response validateUser(UserInput input);
}
实现类处理核心逻辑:
@Service
public class UserValidationServiceImpl implements UserValidationService {
@Autowired
UserMapper userMapper;
@Override
public Response validateUser(UserInput input) {
QueryWrapper<User> query = new QueryWrapper<>();
query.eq("username", input.getUsername());
int count = userMapper.selectCount(query);
return count > 0 ? Response.success() : Response.error();
}
}
数据库交互配置
Mapper接口定义操作方法:
public interface UserMapper extends BaseMapper<User> {
}
XML映射文件配置SQL语句:
<mapper namespace="com.example.demo.mapper.UserMapper">
<resultMap id="UserResult" type="com.example.demo.model.User">
<id column="id" property="userId"/>
<result column="username" property="userName"/>
<result column="password" property="userPass"/>
</resultMap>
</mapper>
数据库连接配置:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tp_music?serverTimezone=GMT%2B8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver