实战干货|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了吗?如果你还有什么疑问,可以点击在线名师咨询详情哦。
猜你喜欢LIKE
相关推荐HOT
更多>>java两个日期比较相差多少天
在Java中,可以使用`java.time`包下的类来比较两个日期之间相差的天数。以下是一个示例代码:importjava.time.LocalDate;importjava.time.tempo...详情>>
2023-06-27 17:19:00find命令查找文件
"find"命令是在Unix、Linux和类似系统中使用的一个非常强大的命令,用于在文件系统中查找文件和目录。它可以根据各种条件进行搜索,并提供了灵...详情>>
2023-06-16 14:00:30如何添加Java环境变量
要添加Java环境变量,请按照以下步骤进行操作:1.打开计算机的控制面板。2.点击"系统和安全"(Windows10及更高版本)或"系统"(Windows7和较早版本...详情>>
2023-06-08 09:31:10随机函数rand怎么使用
rand是一个C++的函数,用于产生一个随机数。以下是使用rand的方法:1.头文件:需要包含stdlib.h或cstdlib头文件以使用rand函数。2.使用rand()函...详情>>
2023-04-20 15:47:10什么是面向对象编程?面向对象有什么特性
面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它将数据和操作数据的方法组合成一个单独的实体,称为“对象”,并且对...详情>>
2023-03-17 15:30:11Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区