实战干货|Spring Boot整合MyBatis框架快速实现数据操作
推荐
在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。
一. Spring Boot数据访问概述
Spring Data是Spring提供的一个用于简化数据库访问、支持云服务的开源框架。它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是使我们可以快速且简单地使用各种数据访问技术。Spring Boot默认采用整合Spring Data的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。
Spring Data提供了多种类型数据库支持,Spring Boot对Spring Data支持的数据库进行了整合管理,提供了各种依赖启动器。通过一张表罗列Spring Boot提供的常见数据库依赖启动器。
二. Spring Boot整合MyBatis实现
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解配置和映射原生信息,并将接口和Java的POJO(Plain Old Java Objects,普通Java对象)映射成数据库中的记录。
MyBatis作为操作数据库的流行框架,Spring Boot没有提供MyBatis场景依赖,但是MyBatis开发团队自己适配了Spring Boot,提供了mybatis-spring-starter依赖启动器实现数据访问操作。进一步简化了MyBatis对数据的操作。
1.基础环境搭建
实现Spring Boot与数据访问层框架(例如MyBatis)的整合非常简单,主要是引入对应的依赖启动器,并进行数据库相关参数设置即可。
1.1 数据准备
在MySQL中创建一个名称为springbootdata的数据库。
在该数据库中创建两个表t_article和t_comment。
1.2 搭建项目
创建一个项目名称为chapter03的Spring Initializr类型的项目。在Dependencies依赖中选择SQL模块中的MySQL和MyBatis依赖。
然后编写数据库表对应的实体类。在com.cy.domain包下,并在该包中编写与数据库表t_article和t_comment对应的实体类Comment和Article类。
(1) 在com.cy.domain包下创建Comment实体类。
(2) 在com.cy.domain包下创建Article实体类。
1.3 编写配置文件
首先在application.properties配置文件中编写对应的MySQL数据库连接配置。
然后对数据源类型选择配置。Spring Boot 1.x版本默认使用的是tomcat.jdbc数据源,Sprng Boot 2.x版本默认使用的是Hikari数据源。如果使用其他数据源,还需要进行额外配置。这里选择使用阿里巴巴的Druid数据源。在pom.xml文件中添加Druid数据源的依赖启动器。
引入的druid-spring-boot-starter依赖,是阿里巴巴为了迎合Spring Boot项目而适配的Druid数据源启动器,当在pom.xml文件中引入该启动器后,不需要再进行其他额外配置,Spring Boot项目会自动识别配置Druid数据源。
上述配置的Druid数据源启动器内部已经初始化了一些运行参数(例如initialSize、maxActive等),如果开发过程中需要修改第三方Druid的运行参数,则必须在全局配置文件中修改。
在application.properties中添加上述配置后,会发现配置的initialSize、minIdle和maxActive属性底色为黄色(IDEA开发工具中的显示色)。这是因为在Spring Boot提供的数据源自动配置类org.springframework.boot.autoconfigure.jdbc.DataSourceProperties中,没有与这些参数对应的默认属性,所以这些设置的属性值无法识别和生效。因此需要编写一个自定义配置类,将配置文件中的属性注入到Druid数据源属性中。
接着我们要在com.cy.config包下创建一个DataSourceConfig自定义配置类,对Druid数据源属性值进行注入。
2.使用注解的方式整合MyBatis
创建Mapper接口文件。在com.cy.mapper包下创建一个用于对数据库表t_comment数据操作的接口CommentMapper。
说明:在对应的接口类上添加@Mapper注解,如果编写的Mapper接口过多时,需要重复为每一个接口文件添加@Mapper注解,为了避免这种麻烦,可以直接在Spring Boot项目启动类上添加@MapperScan("xxx")注解,参数必须指定需要扫描的具体包名。
然后在com.cy测试包下创建MyBatisTests类,并在MyBatisTests类中引入CommentMapper接口,并对接口中方法进行测试。
我们会发现控制台中查询的Comment的articleId属性值为null,没有映射成功。这是因为编写的实体类Comment中使用了驼峰命名方式将t_comment表中的article_id字段设计成了articleId属性,所以无法正确映射查询结果。为了解决上述由于驼峰命名方式造成的表字段值无法正确映射到类属性的情况,可以在Spring Boot全局配置文件application.properties中添加开启驼峰命名匹配映射配置。
3.使用配置文件的方式整合MyBatis
Spring Boot与MyBatis整合使用时,不仅支持注解方式,还支持XML配置文件的方式。在com.cy.mapper包中创建一个操作数据表t_article的接口ArticleMapper。
创建XML映射文件。在resources目录下,创建一个统一管理映射文件的包mapper,并在该包下编写与ArticleMapper接口对应的映射文件ArticleMapper.xml。
配置XML映射文件路径。在全局配置文件application.properties中添加MyBatis映射文件路径的配置,同时需要添加实体类别名映射路径。
最后编写单元测试进行接口方法测试,在测试类MyBatisTests中对接口方法进行测试。
现在你知道如何在SpringBoot中整合Mybatis了吗?如果你还有什么疑问,可以点击在线名师咨询详情哦。