系列文章
從零搭建SpringBoot Web單體項目【基礎篇】1、IDEA搭建SpringBoot項目
從零搭建 SpringBoot Web 單體項目【基礎篇】2、SpringBoot 整合數據庫
目錄
一、項目基礎環境說明
二、數據庫整合流程
1. 添加 MyBatis-Plus 相關依賴(pom.xml)
2. 配置數據庫連接(application.yml)
3. 編寫 MyBatis-Plus 配置類
4. 創建數據庫表(SQL 示例)
三、后臺代碼開發
1. 創建實體類(Demo.java)
2. 創建 Mapper 接口(DemoMapper.java)
3. 創建服務層(DemoService.java & DemoServiceImpl.java)
4. 改造 Controller(DemoController.java)
四、前端頁面開發(demo.ftl)
五、測試驗證
六、常見問題處理
1. 數據庫連接失敗
2. 頁面無數據顯示
3. Freemarker 頁面報錯
一、項目基礎環境說明
- 開發工具:IDEA
- JDK 版本:1.8
- 數據庫:MySQL 5.7
- 構建工具:Maven 3.6
- 技術棧:Spring Boot + MyBatis-Plus + Freemarker + Druid
二、數據庫整合流程
1. 添加 MyBatis-Plus 相關依賴(pom.xml)
在原有項目基礎上,添加數據庫驅動、連接池及 MyBatis-Plus 依賴:
<!-- MySQL驅動 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency><!-- Druid數據庫連接池 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version>
</dependency><!-- MyBatis-Plus核心依賴 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version>
</dependency>
2. 配置數據庫連接(application.yml)
修改配置文件,添加數據源及 MyBatis-Plus 配置:
spring:# 數據庫配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/pearl_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSource # 使用Druid連接池druid:initial-size: 5 # 初始連接數min-idle: 5 # 最小空閑連接數max-active: 20 # 最大活躍連接數max-wait: 60000 # 最大等待時間(毫秒)validation-query: SELECT 1 FROM DUAL # 驗證SQL# MyBatis-Plus配置mybatis-plus:mapper-locations: classpath:/mapper/**/*.xml # Mapper映射文件路徑type-aliases-package: com.pearl.modules.*.entity # 實體類別名包configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 開啟SQL日志輸出
3. 編寫 MyBatis-Plus 配置類
在com.pearl.config
包下創建MyBatisPlusConfig
類,配置分頁插件:
package com.pearl.config;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** MyBatis-Plus配置類*/
@Configuration
public class MyBatisPlusConfig {/*** 分頁插件*/@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}
4. 創建數據庫表(SQL 示例)
CREATE DATABASE IF NOT EXISTS pearl_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE pearl_db;CREATE TABLE demo_user (id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主鍵',name VARCHAR(50) NOT NULL COMMENT '姓名',age INT COMMENT '年齡',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間'
) COMMENT '用戶表';-- 插入測試數據
INSERT INTO demo_user (name, age) VALUES ('張三', 25), ('李四', 30);
三、后臺代碼開發
1. 創建實體類(Demo.java)
在com.pearl.modules.demo.entity
包下創建實體類,使用 Lombok 簡化代碼:
package com.pearl.modules.demo.entity;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;/*** 用戶實體類*/
@Data
@TableName("demo_user")
public class Demo {private Long id;private String name;private Integer age;
}
2. 創建 Mapper 接口(DemoMapper.java)
在com.pearl.modules.demo.mapper
包下創建 Mapper 接口,繼承BaseMapper
:
package com.pearl.modules.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pearl.modules.demo.entity.Demo;/*** 用戶Mapper接口*/
public interface DemoMapper extends BaseMapper<Demo> {
}
3. 創建服務層(DemoService.java & DemoServiceImpl.java)
接口定義(DemoService.java)
package com.pearl.modules.demo.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.pearl.modules.demo.entity.Demo;/*** 用戶服務接口*/
public interface DemoService extends IService<Demo> {
}
實現類(DemoServiceImpl.java)
package com.pearl.modules.demo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pearl.modules.demo.entity.Demo;
import com.pearl.modules.demo.mapper.DemoMapper;
import com.pearl.modules.demo.service.DemoService;
import org.springframework.stereotype.Service;/*** 用戶服務實現類*/
@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {
}
4. 改造 Controller(DemoController.java)
修改原有 Controller,添加用戶列表查詢邏輯:
package com.pearl.modules.demo.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pearl.modules.demo.entity.Demo;
import com.pearl.modules.demo.service.DemoService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;
import java.util.List;/*** Demo控制器*/
@Controller
@RequestMapping("/demo")
public class DemoController {@Resourceprivate DemoService demoService;/*** 查看用戶列表*/@RequestMapping("/list")public String list(Model model) {// 查詢所有用戶(示例:按年齡降序)QueryWrapper<Demo> wrapper = new QueryWrapper<>();wrapper.orderByDesc("age");List<Demo> userList = demoService.list(wrapper);model.addAttribute("userList", userList);return "demo"; // 對應Freemarker頁面}
}
四、前端頁面開發(demo.ftl)
修改resources/templates/demo.ftl
,展示用戶列表:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用戶管理</title>
</head>
<body><h2>用戶列表</h2><table border="1"><tr><th>ID</th><th>姓名</th><th>年齡</th></tr><#list userList as user><tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td></tr></#list></table>
</body>
</html>
五、測試驗證
- 啟動 Spring Boot 應用(運行
PearlBootApplication
) - 訪問地址:
http://127.0.0.1:8080/demo/list
- 預期結果:頁面顯示數據庫中存儲的用戶列表,按年齡降序排列
六、常見問題處理
1. 數據庫連接失敗
- 檢查
application.yml
中的數據庫 URL、用戶名、密碼是否正確 - 確保 MySQL 服務已啟動,數據庫已創建
2. 頁面無數據顯示
- 檢查 SQL 日志是否輸出正確查詢語句(MyBatis-Plus 配置中
log-impl
已開啟) - 確認數據庫表中有測試數據
3. Freemarker 頁面報錯
- 檢查模板文件路徑是否為
resources/templates/demo.ftl
- 確保 Controller 返回的視圖名與文件名一致(不包含擴展名)