SpringBoot基础(三)前言 大家好,一直以来我都本着用最通俗的话理解核心的知识点,我认为所有的难点都离不开基础知识的铺垫适合人群学完Java基础想通过Java快速构建web应用程序想学习或了解SpringBoot 大佬可以绕过背景 本节给大家讲讲Java的SpringBoot框架,之前我们学习的都是java的基础知识和底层提供的一些能力,我们日常工作都是在写接口。在我们在产品开发中,一般我们都会选择比较稳定的框架来帮我们加速开发,不会自己去造轮子,而在java众多框架中,spring框架表现的非常好,大部分公司都会首选它作为开发框架,而至今,大部分企业都是以springboot来构建项目了情景回顾 上期我们讲解了springboot中的http请求处理以及涉及到的几个注解。后台服务始终绕不开数据的开发,我们需要把用户产生的数据落地到数据库。本期,将带大家学习一下springboot中的数据库处理,我们将学习目前市面上比较火的Mybatis框架,它是一个ORM框架,我将分为三个小节去讲解,现在用的比较多的数据库是Mysql,它是一个开源的关系型数据库,这一节将带大家快速入门Mysql。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码往期内容我的博客Springboot入门Springboot基础(一)Springboot基础(二)项目源码(持续更新)springbootall环境搭建 如果你是mac用户,推荐使用homebrew安装,它是mac软件包管理工具,如果你还没安装,可以到这个官网去安装https:brew。shindexzhcn,安装好后执行命令:brewinstallmysql5。7 安装好后,它会列出启动命令,设置root密码命令,复制运行即可 如果你是windows用户,可以直接去mysql官网下载安装,安装好后运行即可可视化工具 工欲善其事,必先利其器。目前市面上可视化工具很多,目前比较火的是Navicat,推荐使用,功能也丰富,界面也比较美观。平时开发中,推荐大家多使用工具,因为很多繁琐的事情,点点按钮就结束了,不用去敲黑乎乎的命令了。 安装好后,我们点击左上角的链接,链接到我们的数据库,链接成功后,右击链接名称,点击新建数据库。 多说一点,在生产环境中,数据库操作,我们一般没有编辑操作,通常只有查询数据的操作,一般用的都是云产品,比如阿里云的Rds,因为维护数据库服务的成本太大了,安全性也不高,所以生成环境中的库一般都是用的云产品。如果你是管理员,对账号一定要做权限,和账号分配。理论概述 之前我们提到mysql是关系型(RDBMS)数据库,我们需要理解几个关键术语:数据库:数据库是一些关联表的集合数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列:一列(数据元素)包含了相同类型的数据,例如邮政编码的数据。行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。外键:外键用于关联两个表。复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。 如果你看的有点懵逼,没关系,这不影响我们成为crudbody,本节只是带大家快速入门,不会涉及太多专业领域知识,不要慌sql语法学习创建表 终于进入正题了,下面我们学习一下mysql的sql编写。我们用Navicat新建一张表,点击我们刚刚创建的库,点击表,然后点击右边绿色加号,就可以新建了。然后会跳出新建字段的界面,输入我们的字段就好,字段意思就是数据的一个属性,这里我们以用户角色表为例,我就不一一带大家新建字段了,这里直接导sql,可以参考,我也是用工具新建的,创建完的表想复制sql给别人,可以点击右边的DDL查看创建表的sqlCREATETABLEuserrole(idint(11)NOTNULLAUTOINCREMENT,namevarchar(255)DEFAULTNULL,rolenamevarchar(20)DEFAULT,isdeleteint(11)DEFAULT0,createdatdatetimeDEFAULTCURRENTTIMESTAMP,updatedatdatetimeDEFAULTCURRENTTIMESTAMPONUPDATECURRENTTIMESTAMP,PRIMARYKEY(id))ENGINEInnoDBAUTOINCREMENT2DEFAULTCHARSETutf8mb4COMMENT用户角色表;Create新增记录 表我们插好了,怎么往里边查数据呢?有两种方式:双击表,进入后右击添加记录,即可,不仅仅是添加,修改直接改选中值改就完了,是不是很方便通过sql语法执行,点击查询新建查询输入sql 我们最常用的就是表的sql操作了,所以我们重点学习数据操作相关的sql语法 插入记录:INSERTINTOuserrole(id,name,rolename,isdelete,createdat,updatedat)VALUES(2,用户,用户,0,2022041210:56:39,2022041210:56:39);Update修改记录UPDATEuserroleSETname用户,rolename用户,isdelete0,createdat2022041210:56:39,updatedat2022041210:56:39WHEREid2;Select查询记录 我们平常业务开发用的最多就是查询操作了,往往复杂的sql也都是在这里产生,sql优化也是优化查询查询所有数据和字段Selectfromuserrole查询某条数据和所有字段Selectfromuserrolewhereid2查询某条数据和某个字段Selectid,namefromuserrolewhereid2按创建时间倒序排序数据Selectid,namefromuserrolewherecreatedatdesc按创建时间升序排序数据Selectid,namefromuserrolewherecreatedatasc按创建时间范围筛选数据Selectid,namefromuserrolewherecreatedat2022040100:00:00andcreatedat2022043000:00:00 sql的语法语义化还是比较友好的,我们查询数据就是selectxxx,在哪查就是from,查哪个就是where,很容易理解,所以不用去背它,要去理解它,多写就熟悉了Delete删除数据DELETEFROMuserroleWHEREid2Where后可以跟的条件and并且,都真为真满足所有才返回查到记录or或一真为真,满足一个就返回记录like模糊查询,通常会和配合使用,比如namelike张,查询只要name中含有张的数据就返回、、、比较大小,这没啥好说的if判断返回,语法格式if(expr,val1,val2),expr是判断条件,如果为真返回val1,否则返回val2去重查询 这里给大家介绍常用的两种:Distinctselectdistinct(name)fromuserrole 这种有弊端,就是distinct必须跟在字段GroupBy分组查询selectfromuserroleGroupByname; 按name进行分组,GroupBy后边可以跟多个字段,当是多个字段时,需要满足多条件 对于数据去重,有时候当数据量很大的时候,我们用sql查询会非常吃力,我们可以在代码层面上做处理,因为程序计算比较快结束语 本节到此就结束了,我们主要讲了Mysql数据库的使用,建议大家多自己练习练习,不要去背语句,要去理解它,适当的做些总结,最新的代码已经同步到仓库了下期预告 有了sql基础之后,我们再学习MyBatis框架就相对简单了,下期带大家正式学习它历史文章汇总