黑马 web 课程 2023 版 SpringBoot 开发笔记

  1. profile 动态激活,在不修改 yaml 文件的前提下更改项目环境 ![[Pasted image 20250909202302.png]]
  2. 运行 jar 包的方式: win 右键控制台运行
    1. SpringBoot 能整合 Junit
    2. SpringBoot 整合 mybatis
  3. mybatis
    1. mybatis 是持久层框架技术
    2. property 文件配置数据库连接信息
    3. 接口中定义集合,引入@mapper
    4. Test 测试可以使用 Stream 流
  4. SpringBoot 项目导入方法:文件-->打开(选择对应的crud文件夹)等打开后点开右边的Maven。点开文件夹双击install,就可以部署好项目。
  5. 数据库建表语句:
text
复制代码
-- 1) 建库(可按需改库名) CREATE DATABASE IF NOT EXISTS `mybatis` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `mybatis`; -- 2) 建表(允许 job、dept_id、entrydate 为 NULL,以匹配第 17 行) DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', `username` VARCHAR(32) NOT NULL COMMENT '登录名', `password` VARCHAR(64) NOT NULL COMMENT '密码', `name` VARCHAR(32) NOT NULL COMMENT '姓名', `gender` TINYINT UNSIGNED NOT NULL COMMENT '1=男, 2=女', `image` VARCHAR(64) DEFAULT NULL COMMENT '头像文件名', `job` TINYINT UNSIGNED DEFAULT NULL COMMENT '职位编号', `entrydate` DATE DEFAULT NULL COMMENT '入职日期', `dept_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '部门ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_dept_id` (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci; -- 3) 插入 17 行示例数据(与截图对应) INSERT INTO `emp` (`id`,`username`,`password`,`name`,`gender`,`image`,`job`,`entrydate`,`dept_id`,`create_time`) VALUES (1, 'jinyong', '123456','金庸', 1,'1.jpg', 4,'2000-01-01',2,'2022-11-07 09:11:00'), (2, 'zhangwuji', '123456','张无忌', 1,'2.jpg', 2,'2015-01-01',2,'2022-11-07 09:11:00'), (3, 'yangxiao', '123456','杨逍', 2,'3.jpg', 2,'2008-05-01',2,'2022-11-07 09:11:00'), (4, 'weiyixiao', '123456','韦一笑', 1,'4.jpg', 2,'2007-01-01',2,'2022-11-07 09:11:00'), (5, 'changyuchun', '123456','常遇春', 1,'5.jpg', 2,'2012-12-05',2,'2022-11-07 09:11:00'), (6, 'xiaozhao', '123456','小昭', 2,'6.jpg', 3,'2013-09-05',2,'2022-11-07 09:11:00'), (7, 'jixiaofu', '123456','纪晓芙', 2,'7.jpg', 1,'2005-08-01',1,'2022-11-07 09:11:00'), (8, 'zhouzhiruo', '123456','周芷若', 2,'8.jpg', 1,'2014-11-09',1,'2022-11-07 09:11:00'), (9, 'dingminjun', '123456','丁敏君', 2,'9.jpg', 1,'2011-03-11',1,'2022-11-07 09:11:00'), (10, 'zhaomin', '123456','赵敏', 2,'10.jpg', 1,'2013-09-05',1,'2022-11-07 09:11:00'), (11, 'luzhangke', '123456','鹿杖客', 1,'11.jpg', 5,'2007-02-01',3,'2022-11-07 09:11:00'), (12, 'hebiweng', '123456','鹤笔翁', 1,'12.jpg', 5,'2008-08-18',3,'2022-11-07 09:11:00'), (13, 'fangdongbai', '123456','方东白', 1,'13.jpg', 5,'2012-11-01',3,'2022-11-07 09:11:00'), (14, 'zhangsanfeng', '123456','张三丰', 1,'14.jpg', 2,'2002-08-01',2,'2022-11-07 09:11:00'), (15, 'yulianzhou', '123456','俞连舟', 1,'15.jpg', 2,'2011-05-01',2,'2022-11-07 09:11:00'), (16, 'songyuanqiao', '123456','宋远桥', 1,'16.jpg', 2,'2010-01-01',2,'2022-11-07 09:11:00'), (17, 'chenyouliang', '123456','陈友谅', 1,'17.jpg', NULL,'2015-03-21',NULL,'2022-11-07 09:11:00'); -- 如需让后续自增从 18 开始: ALTER TABLE `emp` AUTO_INCREMENT = 18;
  1. Test 需要引入@Autowired
  2. mybatis 占位符:#{}
  3. 接口文件引入@mapper和 sql 语法,引入相应注解(@Delete,@Insert
text
复制代码
package com.example.demo.mapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; @Mapper public interface EmpMapper { @Delete("delete from emp where id = #{id}") public int delete(Integer id); }
  1. 引入@Data,@Mapper注解
text
复制代码
package com.example.demo.pojo; import lombok.Data; import org.apache.ibatis.annotations.Mapper; @Data @Mapper public class Emp { private Integer id; private String username; private String password; private String gender; private String email; public Emp(String password, Integer id, String username, String gender, String email) { this.password = password; this.id = id; this.username = username; this.gender = gender; this.email = email; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public String toString() { return "EmpMapper{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", gender='" + gender + '\'' + ", email='" + email + '\'' + '}'; } }
  1. sql 需要防范 sql 注入,
  2. mybatis 动态调用,需要传入参数,引入 mapper,注意占位符
    1. 联动 mapper,Emp 文件,sql 文件,三个信息必须一致
    2. 测试类需要构造员工对象
    3. 主键返回:先获取ID,在保存相关联信息 ![[Pasted image 20250913172727.png]]
  3. 更新数据:@Update,卡点:sql 语句不熟悉
    1. Mapper:动态调用查询语法
    2. sql:查询语法
    3. Test:构造员工对象
    4. .property 文件管理控制台打印结果
text
复制代码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC spring.datasource.username=root spring.datasource.password= # ????? ? ?? mybatis.configuration.map-underscore-to-camel-case=true # 让 MyBatis 直接把 SQL/参数/执行结果打印到控制台 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #(可选)再把 mybatis 相关包的日志级别调高,保证都能看到 logging.level.org.apache.ibatis=DEBUG logging.level.org.mybatis=DEBUG logging.level.com.example.demo.mapper=DEBUG # ???Hikari ??? # spring.datasource.hikari.maximum-pool-size=10
  1. 数据查询:需要给 sql 封装对象起别名 ![[Pasted image 20250914111136.png]]
  2. 模糊查询,避免 sql 注入 ![[Pasted image 20250914120350.png]]https://www.bilibili.com/video/BV1m84y1w7Tb?t=37.2&p=129 [[mybatis sql 模糊查询 案例]]
  3. 编写 xm 映射配置文件
    1. 上官网查 mapper 接口权限类名
    2. 简单的sql用注解,复杂的用xml配置 ![[Pasted image 20250914130703.png]] 3. xml 负责记录类名,sql 语句,对应文件名
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Ury_尤里
作者分享
零基础自学 android +flutter +gradle +AR +kotlin +XML …… 晚上改毕设,最初以为是 XML 的问题,和学长交流后确定是 android flutter 框架问题,进一步分析发现是 AR 问题,改了一晚上,确定是手机型号问题。 GPT 说手机型号不支持下载 Google play ARCore ,导致不得不用另一个 AR 框架,然后—— 发现是图片预加载有问题,inspect 排查计算机网络排查了 4 个小时…… 其实先前还考虑过 kotlin,gradle,XML 的问题,毕竟经常报错。后来跟着学长重装环境后发现是 flutter 版本不兼容,改代码改了整整两周,写了 7000 字的报错笔记…… 毕设真刺激。
1
## 周复盘(6.1 -6.9) ### 1. 经历复盘 #### 早起情况: 6.4,6.8 两天早起失败,原因是失眠+熬夜刷B 站,其余时间均实现 9 点前起床,**睡眠时长**:7.5h,熬夜原因:看镜像案例库直播,刷 B 站 熬夜问题克服,闹钟关闭,则回笼觉问题解决。 #### 学业: 平均每天学习3h,坚持学习黑马程序员JavaWeb开发教程,从 day3 学到 day6 【卡点】vue3 前端,elememnt 组件库,tomcat配置(问题已解决),postman 响应请求,分层解耦 #### 娱乐: 平均每天看1.5h 视频,相较于在校期间减少了1.5h,容易刷 B 站,但刷完感到空虚,需要用打游戏/听音乐/看书(鲁迅)/练习咏春/游泳 进行替代。**学习前先看编程导航文章,然后阅读鲁迅著作,之后开始看教程编码** ### 2.推进任务 1. 坚持每天阅读4 页编程导航博客 2. 完成 tomcat 配置,用 perplexity AI 解决 tomcat 配置时报错 3. 成功解决 vue3 element plus 组件浏览器无法显示的问题 2h 4. 学习 maven 项目管理工具的使用和配置 ### 3.习惯日记 1. 坚持写反馈,记录早起/游泳/打游戏/读书(鲁迅)/练习咏春后的感受,制造正反馈 2. 总结代码报错,bug,整理解决方案,方便下次调用记笔记记思路,记关键节点,成功标准是照着笔记还原项目 3. 将学习的时间变为次数 4. 使用赌徒心理,问问“我能走到哪一步,我的极限在哪里?”,记一本单词书,拆成记 100 页、50 页、20 页单词 ### 4.先前教训(4 -6 月) 1. 拿到编程导航会员后,未能在一周内展开对于下学期所学课程的调查,没有及时询问学长课程相关信息,也没有及时安抚家人情绪,为了弥补 java 面向对象部分的短板,耽误了一个月时间,然后因为学习 AI 智能体,占用了半个月时间,重心偏移,导致 5 月才开始准备 javaWeb 部分内容,且由于熬夜、睡回笼觉,导致作息紊乱,上午时间无法利用,晚上容易空虚。 2. 时间快 app 事件类型混乱,导致趋势统计不准确 ### 5.周计划 1. 每天学习 3 次,投入 3.5 - 6h学习MySQL 查询,争取一周完成javaWeb数据库部分学习 >25h 2. 每天看一次自由泳相关视频,在 6.16 号前学会自由泳完整动作 7h 3. 搜索白嫖 coze,chatGPT 的教程,实现 AI 自由 >3h 4. 投入1h,3 次,学习 Markdown 语法 1h 5. 复习大学规划课的内容,看第一节课程,然后核对课堂作业 >1h 6. 开始搭建时间管理体系,体系框架:睡眠管理 -早起 -切入工作 -处理情绪 -每周锻炼 -复盘系统,6.10 -6.12推进睡眠 -早起部分,6.13 -14 推进切入工作部分,6.15 推进情绪处理 -锻炼部分 ,6.16 复盘部分 7. 结合镜像案例库试炼任务,写一次复盘 >30min
2
2025 年 6 月 6 日 计划: * 完成 vue3 element plus 组件库相关教程 2h ❌ * perplexity 解决组件库引入报错的问题 2h ✅ * 学习 d315 部分内容 ✅ * 【生活】洁牙 ❌ 任务进度: * element plus 组件引入失败:耽误一周,开始学习 vue3 技术 * 复习完 maven 的用法,推进 SpringBoot 学习 * 引入 SpringBoot 后要删除勾选的 demo 文件夹,避免报错![[Pasted image 20250606221606.png]] * 使用 google 浏览器打开, * maven 报错,记得核对 maven 对应版本,推荐一个工具 maven-search * 阅读 4 篇编程导航文章 、
2
2025 年 6 月 5 日 计划: * 阅读 2 篇编程导航技术博客 10min -5min * 重新复习 vue 3 相关技术,回顾课程 1h * 处理小红书爬虫报错的问题 30min -备选方案: cursor手搓小红书爬虫 2h(失败,没时间) * 争取 6:45 起床 推进任务: * 成功解决 vue3 element plus 组件浏览器无法显示的问题 2h * 引入 button 组件,但vue.App 文件报错 2h * 【生活】早起成功
2
推进任务: * 搜索 github 小红书视频脚本库,尝试运行程序但 cursor 始终报错 * 学习 vue 相关知识,处理浏览器页面空白的问题,cursor 持续报错 * 在编程导航阅读相关博客 * 【生活】练习自由泳,7 点起床成功!
3
下载 APP