今天继续搭建咱们的kono Spring Boot脚手架,上一文集成了一些基础的功能,好比统一返回体、统一异常处理、快速类型转换、参数校验等经常使用必备功能,并编写了一些单元测试进行验证,今天把国内最流行的ORM框架Mybatis也集成进去。使用的Spring Boot版本为2.3.2.RELEASE。java
Gitee: https://gitee.com/felord/kono 1.0.0.MYBATIS 分支GitHub: https://github.com/NotFound40... 1.0.0.MYBATIS 分支mysql
集成Mybatis的步骤并非特别复杂,我将它们分为三个步骤,接下来进入正题。git
首先我将Mybatis的Starter加入kono-dependencies进行依赖管理,并在kono-app引入:github
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency>
经过IDEA的Maven插件能够看出咱们引入了Mybatis的Starter以后,高性能的数据源链接池就被集成了进来。可是数据库驱动须要咱们自行引入,这里咱们直接引用MySQL的依赖:spring
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
配置是最重要的部分,咱们来分层次讲解配置。sql
数据源在application.yml
中的配置前缀为spring.datasource
。那么基本的配置以下:数据库
spring: datasource: # 链接池实现的限定名,这里使用hikari链接池。通常不用配置这个,会自动去类路径下加载,这是一个可选的配置。 # type: com.zaxxer.hikari.HikariDataSource # 数据库的驱动JDBC驱动程序的类全限定名,它其实会根据下面的url配置自动检测,这是一个可选配置。 # driver-class-name: com.mysql.cj.jdbc.Driver # 数据库的JDBC连接 url: jdbc:mysql://ip:port/database # 数据库用户名 username: # 数据库密码 password:
hikari链接池的配置能够根据须要自行经过spring.datasource.hikari
进行配置,这里先采用默认,后续若是有须要再进行修改。mybatis
com.mysql.jdbc.Driver
已经标记为过期,如今请使用com.mysql.cj.jdbc.Driver
。
mybatis的基本配置也不是特别多,你只须要让Mybatis知道从哪里加载你定义的Mapper
接口,从哪里加载对应的*Mapper.xml
文件,而后配置一些mybatis的特性,复杂的骚操做能够从我以往mybatis相关的文章去看一下。app
我新建了一张表user_info
,并建立了对应的实体类UserInfo
,接着就是定义Mapper接口的位置。假如说我把全部的Mapper接口放在cn.felord.kono.mapper
包下,那么就应该使用@MapperScan
来标识这个路径,引导mybatis找到这些Mapper接口。框架
import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Configuration; /** * mybatis configuration. * * @author felord.cn */ @MapperScan("cn.felord.kono.mapper") @Configuration public class MybatisConfiguration { }
接着咱们编写UserInfo
对应的UserInfoMapper
接口,并增长一个新增方法。这里能够根据IDE去插件市场下载一些mybatis插件来方便咱们开发,关键字搜索mybatis便可,这里我随便找了一个插件安装。经过IDEA的ALT+ENTER快捷键调出了一个生成UserInfoMapper
对应XML的菜单,咱们可使用它来生成XML文件以及对应方法的语句。
XML文件的位置咱们放在resources下的mapper文件夹中,编译后就是类路径下的mapper文件夹中,因此须要在application.yml
进行以下配置。
mybatis: mapper-locations: classpath:mapper/*Mapper.xml
对应的UserInfoMapper.xml
文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.felord.kono.mapper.UserInfoMapper"> <insert id="save" parameterType="cn.felord.kono.entity.UserInfo"> insert into user_info (name, age) VALUES (#{name}, #{age}) </insert> </mapper>
而后测试一下新增成功了没有问题,可是查询的单元测试却没有经过:
@Test void testUserInfoMapperFindById(){ UserInfo userInfo = userInfoMapper.findById(3); System.out.println("userInfo = " + userInfo); Assertions.assertEquals(3,userInfo.getUserId()); }
这是由于驼峰转下划线的问题形成了,user_id
没法注入到userId
中,因此要声明如下配置来支持下划线转驼峰就能够了:
mybatis: configuration: map-underscore-to-camel-case: true
如何打印SQL语句呢?只须要声明Mapper接口包的日志级别为DEBUG
就能够了。
logging: level: cn.felord.kono.mapper: debug
到这里基本的mybatis整合就完成了,你能够从项目仓库拉下来,本身配置一个数据库跑一下。多多关注:码农小胖哥 继续来和我一块儿整合脚手架。
关注公众号:Felordcn 获取更多资讯