Part01 ☀️
Part01 ☀️
课程内容
- Java编程环境安装
- JDK安装Java运行环境
- Idea工具安装和配置编码工具
- Maven介绍和安装以及创建Maven入门工程(0-1工程)构建工具
- 完成Maven工程的导入(1-2工程)就业必会
- AI编程插件提高编码速度!
- 数据库介绍、安装以及入门操作
- 安装Mysql数据库结构化存储数据
- 安装Navicat或者Sqlyog或者Idea等可视化操作软件可视化操作工具
- 理解库、表、字段、表和表的关系以及单表常见语句等知识。数据库常识
- 使用
MybatisPlus
操作完成数据的增删改查Java操作数据库
1. 实训编码的环境1
实训编码的环境

链接:https://pan.baidu.com/s/1OznJ3cKRLskgYpj44YZHYw?pwd=8848 提取码:8848 --来自百度网盘超级会员V9的分享
代码操作
🎯 JDK

JDK是 java 运行环境配置的工具包,能够是 java 程序运行更加方便顺畅,帮助用户进行编程开发时代码数据库调用,
安装 JDK 是学习 java 程序语言的第一步
JDK 是整个 java 程序的核心,包含 java 运行环境、java 工具和 java 基础类库等,是 java 语言开发工作者必备的工具,让编程更加高效和简单。
安装和教程如下:

jdk-11.0.20_windows-x64_bin是JDK11的版本
jdk-8u162-windows-x64.exe是JDK8的版本
- 说明:
安装 JDK 后,配置环境变量 JAVA_HOME,并且在
cmd
窗口中,输入java -version
提示如下图企业开发中基本都是使用 jdk1.8,外卖项目需要安装 jdk1.8或者jdk11
上面的2个版本都是企业中常用的版本,安装任意一个都可以,Oracle公司也会长期更新。
🎯 Idea

- IDEA 全称 IntelliJ IDEA,是 java 编程语言的集成开发环境。
- IntelliJ 在业界被公认为最好的 Java 开发工具,尤其在AI代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(git、svn 等)、JUnit(单元测试)、代码分析、 创新UI设计等方面的功能非常好用。
- IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版还支持 HTML,CSS,PHP,MySQL,Python 等。

- 安装和教程如下:

😃 安装任何一个版本都可以,编码都是一样的哦,无非就是新版本的支持的插件稍微多一些,皮肤跟好看一点
- 安装注意事项:
- 安装 idea 后,会提示是否试用,可以选择试用(30 天)
- 在安装
Idea
后,在Idea
中配置jdk
🎯 Maven

Maven 是专门用于管理和构建 Java 项目的工具Java开发几乎必用
🎯 MySQL
Monty,是MySQL的CTO和联合创始人,撰写了MySQL95%的服务器端代码。在MySQL以10亿美元的价格被卖给SUN,SUN又被Oracle收购后,MySQL的所有权也落入Oracle的手中。为了保持MySQL的开源使用不受影响,Monty又在2009年创立了MariaDB。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
项目使用 MySQL5.7或Mysql8.0版本已经安装了,不需要重装
4.1 Mysql安装包
跳转到 顶部的
环境、软件安装
中下载资料中下载
4.2 Idea链接Mysql
- 按照下图,连接数据库
🎯 MavenHelper
Maven Helper 可以帮助我们在 IDEA 中更好地开发 maven 项目,主要功能包括:
- 更方便地执行 maven 命令;
- 分析和排除 Maven 冲突;
- 自定义 Maven goals;
- 在当前 Module 所在的路径中打开 Terminal;

很方便的调用maven的命令,而不需要点击右侧的栏目
🎯 MybatisX

MybatisX 插件可以让我们更方便地使用 Mybatis, 主要功能包括:
- 关联 Mapper 文件和 xml 文件,并且支持快速跳转;
- 代码提示;
🎯 Lombok
合理地使用 Lombok 可以极大程度地简化代码,让代码的可读性更强。 Lombok 插件让 IDEA 拥有兼容 Lombok 的能力。
@Slf4j酸辣粉日志注解
:方便输出日志@Data注解
: 可以免除set和get方法 需要导入依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
🎯 TongYi
通义灵码,你的智能编码助手。你可以问我关于编码相关的问题,我们一起更高效率、更高质量地完成编码工作

用过的,都说好!👍
总结
课堂作业
- 参考上述讲义,完成软件和插件的安装!🎤
如果不清楚自己是否装了,可以举手问焱哥
2 SpringBoot入门 ✏️ ❤️
2.1 Boot概述
SpringBoot
在没有正式的学习SpringBoot之前,我们要先来了解下什么是Spring。
我们可以打开Spring的官网(https://spring.io),去看一下Spring的简介:Spring makes Java simple。

Spring的官方提供很多开源的项目,我们可以点击上面的projects,看到spring家族旗下的项目,按照流行程度排序为:

Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。而我们在项目开发时,一般会偏向于选择这一套spring家族的技术,来解决对应领域的问题,那我们称这一套技术为spring全家桶 。

而Spring家族旗下这么多的技术,最基础、最核心的是SpringFramework。其他的spring家族的技术,都是基于SpringFramework的,SpringFramework中提供很多实用功能,如:依赖注入、事务管理、web开发支持、数据访问、消息服务等等。

而如果我们在项目中,直接基于SpringFramework进行开发,存在两个问题:配置繁琐、入门难度大。

所以基于此呢,spring官方推荐我们从另外一个项目开始学习,那就是目前最火爆的SpringBoot。
通过springboot就可以快速的帮我们构建应用程序,所以springboot呢,最大的特点有两个 :
- 简化配置
- 快速开发
Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。

SpringBoot 几乎霸占了整个微服务市场, 所以,大家在日常工作学习过程中,还是要学习SpringBoot
接下来,我们就直接通过一个SpringBoot的web入门程序,让大家快速感受一下,基于SpringBoot进行Web开发的便捷性。🎯
总结
课堂作业
- 为什么要学习Springboot?(提示:地位、市场占有率、企业招聘要求)
- Spring Boot最大的特点是什么?🎤
2.2 Boot入门程序
入门程序
需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 "Hello World ~"。

代码操作
开发步骤
第1步:创建SpringBoot工程并添加启动类
第2步:定义HelloController类,添加方法hello,并添加注解
第3步:测试运行
背景介绍:

因此,需要使用maven方式创建Boot工程
Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了,之后全力维护 3.x;而 Spring Boot 3.x 对 JDK 版本的最低要求是 17!
而国内主流JDK为:8和11,且企业大部分使用SpringBoot2.x的版本,因此需要通过Maven创建2.x的项目
1、创建一个项目

2、检查Maven配置是否正确

3. 项目创建成功后,在pom.xml中添加<parent></parent>
父依赖,企业中使用2.7.4以下版本较多
<!-- springboot父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/>
</parent>
然后在引入依赖管理和插件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- lombok的依赖,能免除get和set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.4</version>
</plugin>
</plugins>
</build>
4. 整体效果如下:
5. 然后在src-java下创建包名cn.itcast(也可以是你自己公司域名的反写),并在包下创建启动类 👇
package com.itcast;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
System.out.println("项目启动成功!!!!");
}
}
在启动类的目录下,创建HelloController.java 内容如下:
同学们,千万不要对着一个一个字母敲,而是要充分利用idea的自动提示哦!!!
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
return "hello "+name;
}
}
如果不清晰流程,可以点击下面的链接查看详细流程👇
- 启动项目
- 打开浏览器,访问链接:http://localhost:8080/hello?name=yange
- 观察浏览器是否有响应,已经参数是否在idea的控制台中正确输出输出

2.3 SpringBoot入门程序解析
入门程序我们已经搞定了,接下来,我们就一起来解析一下我们所编写的入门程序。
入门程序解析
Tomcat,是一个开源的Web应用服务器。 它可以看作是一个“小型网站服务器”,主要用于运行Java编写的网站

1. main方法如何启动Tomcat ?

因为我们在创建springboot项目的时候,选择了web开发的起步依赖 spring-boot-starter-web。而spring-boot-starter-web依赖,又依赖了spring-boot-starter-tomcat,由于maven的依赖传递特性,那么在我们创建的springboot项目中也就已经有了tomcat的依赖,这个其实就是springboot中内嵌的tomcat。
而我们运行引导类中的main方法,其实启动的就是springboot中内嵌的Tomcat服务器。 而我们所开发的项目,也会自动的部署在该tomcat服务器中,并占用8080端口号 。

2.4 SpringBoot进阶程序
SpringBoot进阶程序
访问boss直聘、百度等网站,发现返回的数据,不是简单的字符串,而是类似这样的,👇 https://www.zhipin.com/wapi/zpCommon/data/getCityShowPosition
上面这种特殊字符串叫做JSON,是企业中常用的前端后端交互的数据格式!!
接下来,做一个案例,来体验SpringBoot项目的简便特性!!
代码操作
相关信息
- 创建User类,定义变量
- 根据HelloController的样子,创建UserController,将参数和返回值进行修改
- 运行测试,访问
创建User类,定义变量
@Data
public class User {
// id,name,age,password,department,description,hobby
private Integer id;
private String name;
private Integer age;
private String password;
private String department;
private String description;
private String hobby;
}
@RestController
public class UserController {
@RequestMapping("/user")
public User getUserById(Integer id){
//模拟数据库查询,是假数据
User user = new User();
user.setId(id);
user.setName("张三");
user.setAge(20);
user.setDescription("张三很帅");
user.setDepartment("研发部");
user.setHobby("打篮球");
return user;
}
}
- 启动项目
- 打开浏览器,访问链接:http://localhost:8080/user?id=3
- 观察浏览器是否有响应,已经参数是否在idea的控制台中正确输出输出

3. SpringBoot集成MybatisPlus
MybatisPlus框架

为什么要学习MybatisPlus框架:
- 提高开发效率:MybatisPlus框架提供了丰富的功能和工具,能够简化开发过程,减少样板代码的编写,从而提高开发效率。less code and less bug
- 优化数据库操作:MybatisPlus框架提供了一系列的优化策略和技巧能说出若干吗?,可以优化数据库操作性能,提升系统的响应速度和吞吐量。
- 社区支持和生态系统中国人写的,中文文档杠杠的!:MybatisPlus框架拥有庞大的用户社区和活跃的开发者群体,提供了大量的学习资源和技术支持。
应用场景:
- 数据库访问层:MybatisPlus框架主要用于简化数据库访问层的开发,提供了灵活的SQL映射配置和便捷的CRUD操作。 代码生成器:MybatisPlus框架内置了强大的代码生成器,能够根据数据库表结构自动生成实体类、Mapper接口和XML映射文件,极大地提升了开发效率。
分页查询分页助手:MybatisPlus框架提供了方便的分页查询支持,可以轻松处理大量数据的分页查询需求。
逻辑删除假删除:MybatisPlus框架支持逻辑删除功能,可以方便地标记和查询已删除的数据,避免物理删除导致的数据丢失。
接下来,我们将在SpringBoot下集成Mybatis的使用完成需求1、需求2、需求3 👇 👇
代码操作
- SpringBoot项目工程创建完成后,在pom.xml文件中的dependencies标签内,导入Mybatis的起步依赖和MySQL驱动依赖
springboot parent版本:2.5+ 版本
<!-- lombok的依赖,能免除get和set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<!-- mybatisplus的起步依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- mysql驱动包依赖 版本根据mysql安装版本:常见的5.1.47 和8.0.23 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
- 创建mybatis数据库,设置编码为utf-8mb4,创建user表,并导入一下假数据
-- 创建数据库 mybatis
create database if not exists mybatis;
-- 删除原有的user表
DROP TABLE IF EXISTS `user`;
-- 创建user表
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL UNIQUE,
`password` varchar(32) NOT NULL DEFAULT '12345678',
`age` int(10) NOT NULL,
`hobby` varchar(50) DEFAULT NULL,
`description` varchar(200) NOT NULL,
`department` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('8', '赵灵儿', '12345678', '20', '阵法、法术修炼', '纯真善良的女子,拥有强大的阴阳之力', '阴阳家');
INSERT INTO `user` VALUES ('9', '楚留香', '12345678', '32', '剑术、侠义行侠', '风流倜傥的豪客,以智慧和剑术征服江湖', '江湖人士');
INSERT INTO `user` VALUES ('10', '白浅', '12345678', '26', '宫廷舞蹈、仙法修炼', '美丽高贵的仙子,守护爱与正义的力量', '青丘派');
INSERT INTO `user` VALUES ('11', '苏明玉', '12345678', '29', '医术、家族事务', '聪明伶俐的女医生,心系家族兴衰', '苏家');
INSERT INTO `user` VALUES ('13', '李逍遥', '12345678', '28', '剑术、侠义行侠', '潇洒自如的剑客,为爱与正义奋斗', '天墉城');
INSERT INTO `user` VALUES ('14', '陆展元', '12345678', '31', '龙族法术、海洋探险', '勇敢善良的龙族王子,探索海洋奥秘', '东海龙宫');
INSERT INTO `user` VALUES ('18', '萧炎', '12345678', '25', '功夫、修炼', '机缘巧合下拥有强大火焰之力的少年', '草庙村');
INSERT INTO `user` VALUES ('19', '陆九淳', '12345678', '29', '家族事务、剑术修炼', '家族责任重于一切的江湖少年', '陆家');
INSERT INTO `user` VALUES ('20', '韩立', '12345678', '22', '灵力修炼、阵法研究', '机智聪明的年轻修士,掌握神奇的法术', '韩家');
INSERT INTO `user` VALUES ('21', '顾惜朝', '12345678', '28', '法术修炼、守护门派', '心地善良的女子,为守护门派而战', '古玄门');
INSERT INTO `user` VALUES ('22', '九霄真人', '12345678', '35', '仙法修炼、教导弟子', '威严正直的仙人,指导后辈修仙道路', '蓝霞宫');
INSERT INTO `user` VALUES ('23', '姬昌', '12345678', '33', '阴阳术、仙法修炼', '智勇双全的江湖人物,掌握阴阳之力', '太阴派');
INSERT INTO `user` VALUES ('24', '西门吹雪', '12345678', '30', '剑术、侠义行侠', '风流倜傥的剑客,执着追求剑道境界', '独孤家');
INSERT INTO `user` VALUES ('25', '夏冰', '12345678', '26', '魔法修炼、冰雪之力', '美丽神秘的女子,掌握冰雪之力', '幻冥宗');
INSERT INTO `user` VALUES ('26', '杨影枫', '12345678', '27', '暗器、侠义行侠', '冷酷无情的刺客,为正义而战', '影家');
INSERT INTO `user` VALUES ('27', '白素素', '12345678', '24', '文学创作、人界事务', '善良纯真的女子,用文字记录人间百态', '人界');
INSERT INTO `user` VALUES ('28', '独孤剑', '12345678', '32', '剑术、侠义行侠', '心系家族的剑客,剑法高超', '独孤家');
INSERT INTO `user` VALUES ('29', '楚九霄', '12345678', '28', '阵法、家族事务', '机智聪明的年轻人,心系家族荣耀', '楚家');
INSERT INTO `user` VALUES ('30', '谢晓峰', '12345678', '31', '拳脚功夫、江湖恩怨', '正直勇敢的江湖豪杰,忠于兄弟情义', '铁血帮');
INSERT INTO `user` VALUES ('31', '叶孤城', '12345678', '29', '剑术、侠义行侠', '冷酷无情的剑客,追求剑道极致', '武境城');
INSERT INTO `user` VALUES ('32', '李逸风', '12345678', '25', '修炼、探险', '热血青年,勇往直前探索未知世界', '蓝枫大陆');
INSERT INTO `user` VALUES ('33', '萧霜', '12345678', '27', '冰雪法术、守护宗门', '冷艳高傲的女子,守护冰霜宗的利益', '冰霜宗');
INSERT INTO `user` VALUES ('34', '楚玉峰', '12345678', '30', '家族事务、阵法修炼', '机智聪明的年轻人,家族责任重于一切', '楚家');
INSERT INTO `user` VALUES ('35', '陆雪琪', '12345678', '24', '法术、修行', '美丽冷傲的仙子,修炼法术追求修行境界', '青云门');
INSERT INTO `user` VALUES ('36', '明月心', '12345678', '26', '琴音、舞蹈', '温柔善良的女子,以音乐传递爱与希望', '云裳派');
INSERT INTO `user` VALUES ('37', '程灵素', '12345678', '27', '仙法修炼、仙岛事务', '温柔善良的仙子,守护仙岛和平', '蓬莱仙岛');
INSERT INTO `user` VALUES ('38', '韩非', '12345678', '23', '学术研究、阵法修炼', '聪明睿智的年轻人,研究阵法和学术', '韩家');
INSERT INTO `user` VALUES ('40', '戚芳', '12345678', '23', '武功、家族事务', '机智勇敢的女子,为家族荣誉而战', '戚家');
INSERT INTO `user` VALUES ('41', '楚轩辕', '12345678', '28', '家族事务、剑术修炼', '家族责任重于一切的剑客', '楚家');
INSERT INTO `user` VALUES ('42', '秦王', '12345678', '35', '政务、战争', '智勇双全的帝王,统一六国的志向', '秦国');
INSERT INTO `user` VALUES ('43', '李寻欢', '12345678', '30', '剑术、侠义行侠', '聪明机智的江湖人物,正义心十足', '大宛城');
INSERT INTO `user` VALUES ('44', '唐三藏', '12345678', '45', '佛法修行、西行取经', '慈悲心肠的高僧,带领徒弟西天取经', '大唐');
INSERT INTO `user` VALUES ('45', '吴青烟', '12345678', '26', '法术修行、江湖事务', '冷艳高傲的女子,修炼法术追求江湖大业', '青云门');
- 在application.yml配置文件下,配置数据库信息(驱动、链接、用户名、密码)
# 顶格写哦
spring:
#数据库连接信息
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
#MybatisPlus配置 日志,驼峰,id策略
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
4.Idea链接Mysql
- 按照下图,连接数据库
5.根据图解创建controller service mapper domain包,并且将对应的类移动一下,如下图:👇

三层架构就是为了符合高内聚,低耦合 思想,把各个功能模块划分为表现层 、业务逻辑层 和数据访问层 三层架构,各层之间采用接口相互访问,并通过对象模型的实体类作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致
6.使用MybatisX小鸟插件,生成对应的service mapper 实体类的MybatisPlus代码
选择user表,右击选择MybatisX,弹出对话框步骤1-5
点击下一步后,继续完成步骤6-9
点击完成后,左侧的文件目录如下对应三层架构,找找对应的文件
需求1:查询id为20的用户,输出在控制台可以先自己分析
在UserController中直接导入对应的Service,就可以了
@RestController
public class UserController {
@Autowired
UserService userService;
@RequestMapping("/user")
public User getUserById(Integer id){
//模拟数据库查询,是假数据
// User user = new User();
// user.setId(id);
// user.setName("张三");
// user.setAge(20);
// user.setDescription("张三很帅");
// user.setDepartment("研发部");
// user.setHobby("打篮球");
//来自数据库中的真数据
User user = userService.getById(id);
return user;
}
}
运行截图

思考:对应的sql语句是什么?虽然不需要写sql,但是能够帮助理清思路哦!
思考:对应的sql语句是什么?虽然不需要写sql,但是能够帮助理清思路哦!
总结
课堂作业
- 参考MybatisPlus的需求1-3,完成对应的代码,将截图发群里哦 有加分的哦🎤
今日作业
- 安装软件和插件
- 完成springboot集成Mp操作,并且完成3个需求
- 导入商城数据库脚本且运行入商城nginx前端项目