1. 项目涉及到的技术点
- 如何创建一个springBoot项目
2. springBoot可以用来干嘛?
我们先来看一个场景,如下图所示:
上图中,有一个app手机端,和一个web网页端,假设web管理员端有一个商品列表数据,希望在app端同步显示。反之,app端有一个用户订单列表,也希望同步在web管理员端。那么这如何去做到数据同步呢?问题思考…
在我们平时开发app项目的时候,我们通常用SQLite数据库来做数据存储(比如:用户注册),SQLite数据是存储在app应用里面的,这个时候,web端的管理员希望可以看到所有用户注册数据,这就没法去实现。可不可以web端去写一个sql语句去查询SQLite的数据呢?,有同学就有疑问?
那我就来用白话文解释一下吧:
- SQLite数据库是针对开发安卓app用的,就好像你明明是开发安卓app,问能不能安装在IOS上面一个道理
- 跨平台的问题,一个是安卓设备,一个web网页,两者之间没有任何联系,所以并不能简单的数据互通
- 那能不能做到数据互通呢?
答案肯定是有的,只不过不是想的那么简单,并不是写一个sql语句方法去调用
- 重点来了 ,要互通就涉及到
服务
,那么服务又是啥???看下图
上图中,我们多了一个服务端,从图中可以看出,app端和web端并没有直接查询数据库,而是访问的服务端,服务端再去访问数据库。然后将查询到的结果响应给app端或web端。那么这个服务端
起到了什么作用呢?简单理解就是一个中介
的作用:就好比你去找房子,为啥你不直接去找房东,而是去找中介(房东难找啊,压根不现实,那么中介就此出现了,就能解决用户找房子难的问题)
那服务端要做些什么事情呢?
简单的举个例子好啦,app端实现用户注册,web端要查询用户注册信息
- 首先你要告诉服务端,你要干嘛(类比你要告诉中介你的需求是什么)
- 服务端知道你的需求之后,去写相应的逻辑,对数据库做增删改查操作,然后返回结果给你(类比中介根据你的需求去实现你想要的结果)
- 数据库的操作不再是app端或者web端直接操作,而是被
服务端(中介)
去处理这些事情,当然是要通过写代码实现的
用专业的术语描述: 就是服务端要编写项目功能模块API,也就是我们常说的调用接口,这个接口就是我们服务端要用代码去实现的。如:用户注册有注册的接口,web端查询订单有订单的接口,项目有什么功能,服务端就应该有对应的接口调用
3. 在线创建一个springBoot项目
实现步骤:
-
如下图所示
-
点击右上角添加一些要使用到的依赖
-
等待下载之后,将.zip解压
解压后的项目不要放在带有中文路径下,也不要用中文去命名项目,重要事说三遍~~
解压后的项目不要放在带有中文路径下,也不要用中文去命名项目,重要事说三遍~~
解压后的项目不要放在带有中文路径下,也不要用中文去命名项目,重要事说三遍~~
-
打开IDEA 选择open打开刚才解压后的项目
注意事项:如果你的电脑安装的jdk版本是1.8,需要将pom.xml中的<java.version>1.8</java.version> 和spring-boot-starter-parent版本改为3.0以下,3.0+以上是不支持jdk 1.8版本的
<properties>
<!-- <java.version>17</java.version>-->
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- <version>3.3.2</version>-->
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
mybatis-spring-boot-starter 也要降低版本
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<!-- <version>3.0.3</version>-->
<version>3.0.0</version>
</dependency>
改完之后,重新构建一下Build->Rebulid Project
接下来就是运行项目:找到xxxApplication类,然后在main()方法上面右键 ->Run xxxApplication ,等待程序跑起来
接下来就会报这个错误:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
原因是没有设置数据库连接,前提安装了MySQL,记住安装MySQL时的用户名和密码
解决办法:配置数据库文件application.yml,将系统默认的application.properties后缀名改为.yml,也可以直接新建文件application.yml ,application.yml所在项目位置,resources目录下,如下图所示
配置如下
#server
server:
port: 8080
tomcat:
uri-encoding: UTF-8
# mybatis配置
mybatis:
# mapper映射文件位置
mapper-locations: classpath:mapper/*.xml
# 实体类所在的位置
type-aliases-package: com.school.trading
#用于控制台打印sql语句
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
spring:
#//db 配置
datasource:
url: jdbc:mysql://localhost:3306/school_trading?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 12345678
servlet:
#文件上传配置
multipart:
enabled: true
#file-size-threshold: 单个数据size,默认0B
file-size-threshold:
1024MB
#最大请求size,默认10MB
max-request-size:
1024MB
#最大文件size,默认1MB
max-file-size:
1024MB
这一步是关键:
#//db 配置
datasource:
url: jdbc:mysql://localhost:3306/school_trading?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: xxxxx
school_trading:改为自己的数据库名
username:改为自己的mysql 用户名
password: 改为自己的mysql 密码
非常建议安装了MySQL之后,再安装一个Navicat可视化视图工具,先创建一个链接,然后创建数据库名school_trading
4. 使用Navicat创建数据库连接
前提安装MySQL,并记住用户名和密码,重要事说三遍~~~
前提安装MySQL,并记住用户名和密码,重要事说三遍~~~
前提安装MySQL,并记住用户名和密码,重要事说三遍~~~
-
打开Navicat,点击坐上角【连接】
-
选择MySQL,如下图所示
-
提示连接成功,说明用户名和密码正确
-
点击确认如下图
温馨提示:数据库连接不需要每次打开都要创建,只创建一次连接即可
-
双击打开test,颜色变绿。仔细看,默认颜色是灰色的
-
然后右键->新建数据库
最后再运行项目,看日志结果: Tomcat started on port(s): 8080 (http) with context path ‘’
到这里就大功告成啦~~~~