Spring Boot: 与 MySQL 交互
2020-03-11 本文已影响0人
weizujie
前言
本文介绍了如何使用 Spring Boot 框架读取 MySQL 数据库信息并展示在前端页面上
目录截图
image.pngSpring Boot 框架中几个层之间的关系
Spring Boot 中分为几个层:
- entity 层(model/pojo): 存放实体类.属性值与数据库中的属性值保持一致. 实现 get/set 方法.
- dao 层: mapper 层.操作数据库,实现数据的增删改查, 说白了就是写 sql 语句的 .具体语句写在 mapper.xml 中
- 为了方便我直接写在了 UserMapper 里, 尽量写在 mapper.xml
- service 层: 业务逻辑层.调用 dao 层接口,接收 dao 层返回的数据
- 具体实现写在 impl 中
- controller 层: 控制层. 实现前后端的交互.调用 service 层, 接收 service 层返回的数据,最后返回具体的页面和数据到客户端
准备工作
创建数据库
本文要做的事情非常简单,就是查询数据库信息,所以只需要两个字段就完事了
- id : int类型, 主键, 自增
- name : varchar类型
插入一条数据
导入依赖
创建项目的时候勾选一下几个即可, 或者到 maven 仓库里找
- Lombok
- Spring Web
- Thymeleaf
- Mybatis Framework
- MySQL driver
配置 application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_test?useUnicode=true&&characterEncoding=utf8
username:
password:
driver-class-name: com.mysql.cj.jdbc.Driver
项目开发
后端逻辑
entity 层
注意要与数据库的属性值对应,构建 getter / setter
entity/User
private Integer id;
private String name;
dao 层
这层写 sql 语句,查询表中的所有数据
dao/UserMapper
@Mapper
public interface UserMapper { // class 改为 interface
@Select("select * from test")
User getName(@Param("id") Integer id); //
}
service 层
service/UserService
public interface UserService {
User getName(Integer id);
}
service/impl/UserServiceImpl
这里写具体实现, 注意要继承接口 UserService
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getName(Integer id) {
return userMapper.getName(id);
}
}
controller 层
最后要在 controller 层里调用 service 层, 接收返回来的数据, 并展示在前端页面
controller/UserController
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public String getName(Integer id, Model model) {
User user = userService.getName(id);
model.addAttribute("user", user);
return "user";
}
}
前端展示
要在 resource/template
创建一个新的 html 文件, 命名为 user.html
注意加上 xmlns:th="http://www.thymeleaf.org"
<!DOCTYPE html >
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div><h1 th:text="${user.name}"></h1></div>
</body>
</html>
效果
访问http://localhost:8080/
即可看到效果
整个项目的搭建与代码已完成.
总结
搞清楚各层之间的关系, 理清楚逻辑之后代码会变得非常好写.