从 JDBC 到 SpringBoot:微头条项目实战学习笔记
今天的学习之旅堪称“从基础到进阶”的数据库操作实战,从原生JDBC实现登录与新闻发布,一步步过渡到SpringBoot+MyBatis-Plus的高效开发模式,整个过程既夯实了底层原理,又掌握了企业级开发的便捷工具,现将核心知识点与实操心得整理如下。
一、基础篇:JDBC实现核心业务(登录+新闻发布)
1. 前期准备:数据库与表结构搭建
首先在MySQL中创建了weitoutiao数据库,核心表包含两张:
user表:存储用户信息,包含id(自增主键)、username(唯一)、password、role、news_count(发帖数)、create_time等字段;news表:存储新闻信息,通过user_id与user表建立外键关联,包含title、content、publish_time、view_count等字段。
2. 核心实现:原生JDBC操作
(1)DBUtil工具类封装
编写DBUtil类统一管理数据库连接,核心是通过DriverManager加载MySQL驱动、获取连接,将连接参数(URL、用户名、密码)封装为常量,静态代码块加载驱动,提供getConnection()方法供外部调用,避免重复代码。
(2)用户登录功能(UserDAO)
在UserDAO中编写login方法,使用PreparedStatement预编译SQL(防止注入),通过?占位符绑定用户名和密码,执行executeQuery()获取ResultSet结果集,遍历结果集封装为User实体类返回,核心SQL:
SELECT id, username, role, news_count FROM user WHERE username=? AND password=?
(3)新闻发布(事务保证一致性)
发布新闻需要两步操作:向news表插入数据 + 更新user表的news_count,为避免“插入新闻成功但更新发帖数失败”的不一致问题,开启事务控制:
- 调用
conn.setAutoCommit(false)关闭自动提交; - 依次执行插入、更新SQL;
- 无异常则
conn.commit()提交事务,异常则conn.rollback()回滚; - 最终在
finally中关闭连接、Statement等资源,保证资源释放。
二、进阶篇:SpringBoot+MyBatis-Plus重构
原生JDBC虽能实现功能,但代码冗余(频繁处理连接、关闭资源),因此学习用SpringBoot+MyBatis-Plus简化开发。
1. SpringBoot项目创建与配置
(1)项目初始化
通过IDEA创建SpringBoot 3.1.5项目,引入核心依赖:Spring Web、MySQL Driver、Lombok、MyBatis-Plus Starter,简化依赖管理。
(2)application.yml配置
替换默认的application.properties,用YAML格式配置核心信息:
- 服务器端口(8080);
- 数据库连接信息(URL、用户名、密码、驱动类);
- MyBatis-Plus配置:开启SQL日志、下划线转驼峰、主键自增、逻辑删除等。
2. 实体类与Mapper层
(1)实体类优化(Lombok+注解)
使用@Data(Lombok)省略get/set方法,结合MyBatis-Plus注解映射数据库表:
@TableName:指定对应表名;@TableId(type = IdType.AUTO):标记主键并指定自增策略;@TableField(fill = FieldFill.INSERT):指定字段自动填充(如创建时间);@TableLogic:标记逻辑删除字段。
(2)Mapper接口(BaseMapper)
创建UserMapper、NewsMapper接口,继承MyBatis-Plus的BaseMapper,无需编写SQL即可获得通用CRUD方法(selectList、insert、update等),仅需添加@Mapper注解,或在启动类添加@MapperScan("com.weitoutiao.mapper")扫描Mapper包。
3. 测试验证
编写测试类,通过@SpringBootTest注解启动Spring容器,注入UserMapper,调用selectList(null)即可查询所有用户,无需手动处理连接、结果集,代码量大幅减少。
三、学习心得
- 底层原理很重要:原生JDBC的学习让我理解数据库连接的本质、事务的核心(ACID),明白“为什么SpringBoot能简化开发”;
- 工具提升效率:MyBatis-Plus的
BaseMapper封装了通用CRUD,Lombok简化实体类代码,SpringBoot自动配置省去手动配置连接池、驱动等操作,大幅提升开发效率; - 事务的必要性:涉及多步数据库操作时,事务是保证数据一致性的关键,原生JDBC需手动控制提交/回滚,后续可学习Spring的声明式事务(
@Transactional)进一步简化; - 规范与封装:无论是
DBUtil还是SpringBoot的配置,核心思想都是“封装重复逻辑、统一管理资源”,这是开发的核心思维。
从原生JDBC的“手写每一行代码”到SpringBoot的“开箱即用”,不仅是技术的升级,更是开发思维的转变:既要懂底层原理,又要善用工具,才能在保证代码健壮性的同时提升开发效率。接下来计划继续学习SpringBoot的控制器(Controller)、服务层(Service),完成微头条项目的完整重构。

浙公网安备 33010602011771号