前面2个章节我们简单讲解了SpringBoot的操作简单性,SpringBoot框架内部提供了很多我们需要用到的组件,需要什么你就可以拿到项目里。
在我们平时的项目中,数据的存储以及访问都是最为核心的关键部分,现在有很多企业采用主流的数据库,如关系型数据库:MySQL数据库,oracle数据库,sqlserver数据库。非关系型数据库:redis,mongodb等。
SpringBoot已经为我们提供了很多种的数据库来做数据存储以及读取,上面只是简单的几种,那么我接下来以MySQL数据库为例来讲述下本章的内容。
注意:我们学习的章节都是按照步骤来的,后面添加的jar和前面所学章节jar同时存在,不然项目会报错。我就不在后面章节再写前面的jar引入了。
本章目标
学习并且使用SpringBoot访问MySQL数据库,并且结合SpringDataJPA完成CRUD(Create,Read,Update,Delete)简单操作。
一、配置SpringBoot对SpringDataJPA的支持
首先我们需要连接数据库MySQL,理所当然,导入MySQL的jar,如图一
接下来要导入和SpringJPA的支持,还需要引入一个JSON的jar包,如图二所示:
接下来我们引入一个阿里巴巴的一个fastjson的jar包,如图三所示:
上图的注释是我添加的,项目默认创建完成后是没有注释的。
注意:如果使用内部tomcat运行项目需要将spring-boot-starter-tomcat的scope标签注释掉。
配置数据源以及JPA
今后我们修改application.properties文件配置为application.yml配置。.yml配置文件与.properties配置要更清晰更有层次感,可以很明了的看懂配置信息,但2个文件可以同时存在。Springboot会自动扫描。
我们在resources目录下创建application.yml文件,并且配置DataSource以及JPA,如下图四所示:
可以看到上述配置文件内,我们使用了本地的一个mysql数据库,mysql数据库是我们是先安装好的,并且创建了一个名叫gateway-manage的数据库,JPA的配置了show-sql用来在控制台输出JPA自动生成的sql语句。
上述数据配置文件已经完成,接下来我们新建数据库测试表结构我使用的数据库工具是Navicat Premium打开,大家可自行下载或者使用其他工具,结构如下图5所示:
一、创建实体
接下来我们开始编写实体,我们采用@Table注解来编写一个实体类,如下图6所示:
二、创建接口,创建JPA
实体类我们也已经创建完成了,那么接下来我们需要使用SpringDataJPA来完成数据库持久化操作,我们新建名字叫做dao的package,然后创建UserJPA接口并且继承SpringDataJPA内的接口作为父类,接下来我们来编写SpringDataJPA的实现的Dao层,如图七所示:
我们UserJPA继承了JpaRepository接口(SpringDataJPA提供的简单数据操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)、Serializable(序列化接口)。
我们并不需要做其他的任何操作了,因为SpringBoot以及SpringDataJPA会为我们全部搞定,SpringDataJPA内部使用了类代理的方式让继承了它接口的子接口都以spring管理的Bean的形式存在,也就是说我们可以直接使用@Autowired注解在spring管理bean使用,如下图八所示:
到这一步我们的数据库层几乎已经编写完成了,那么我们需要编写控制器让我们通过页面可以访问到数据。
编写查询方法
我们接着看UserController中,然后创建一个查询用户列表的方法,如下图9所示:
注:其中userJps.findAll()方法就是SpringDataJPA为我们提供的内置方法,它可以查询表内所有的数据,除了findAll还有很多有用的方法。
编写新增/更新方法
注:图10上述操作是完成数据库持久化操作,也是SpringDataJPA提供的内置方法,save方法可以执行添加也可以执行更新,如果需要执行持久化的实体存在主键值则更新数据,如果不存在则添加数据。
编写删除方法
图11 我们删除完用户后直接返回了查询所有用户列表,可以查看到用户是否已经删除成功。这样我们只剩下最后一步操作了。
运行项目
上述图片红色部分表示我们已经加载了我们写的方法。那么我们尝试访问用户列表路径:127.0.0.1:8080/user/list可以看到如下图13所示,之前我因为添加了几条数据,结果我们如图13所示
注:其他的操作我就不在这里一一运行了,就靠大家自己去测试了。
总结
上述内容就是我们本章的全部内容,主要讲述了springboot整合mysql并且使用SpringDataJPA来完成数据库操作。