1. 前言

今天继续搭建我们的kono Spring Boot脚手架,上一文集成了一些基础的功能,比如统一返回体、统一异常处理、快速类型转换、参数校验等常用必备功能,并编写了一些单元测试进行验证,今天把国内最流行的ORM框架Mybatis也集成进去。使用的Spring Boot版本为2.3.2.RELEASE

Gitee: https://gitee.com/felord/kono 1.0.0.MYBATIS 分支

GitHub: https://github.com/NotFound403/kono 1.0.0.MYBATIS 分支

2. 集成Mybatis的步骤

集成Mybatis的步骤并不是特别复杂,我将它们分为三个步骤,接下来进入正题。

3. 依赖集成

首先我将MybatisStarter加入kono-dependencies进行依赖管理,并在kono-app引入:

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

通过IDEAMaven插件可以看出我们引入了MybatisStarter之后,高性能的数据源连接池就被集成了进来。但是数据库驱动需要我们自行引入,这里我们直接引用MySQL的依赖:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

4. 配置

配置是最重要的部分,我们来分层次讲解配置。

4.1 先配置数据源

数据源在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进行配置,这里先采用默认,后续如果有需要再进行修改。

com.mysql.jdbc.Driver已经标记为过时,现在请使用com.mysql.cj.jdbc.Driver

4.2 mybatis配置

mybatis的基本配置也不是特别多,你只需要让Mybatis知道从哪里加载你定义的Mapper接口,从哪里加载对应的*Mapper.xml文件,然后配置一些mybatis的特性,复杂的骚操作可以从我以往mybatis相关的文章去看一下。

我新建了一张表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即可,这里我随便找了一个插件安装。通过IDEAALT+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

5. 总结

到这里基本的mybatis整合就完成了,你可以从项目仓库拉下来,自己配置一个数据库跑一下。多多关注:码农小胖哥 继续来和我一起整合脚手架。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

从零搭建Spring Boot脚手架(3):集成mybatis的更多相关文章

  1. 从零搭建Spring Boot脚手架(1):开篇以及技术选型

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  2. 从零搭建Spring Boot脚手架(2):增加通用的功能

    1. 前言 今天开始搭建我们的kono Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节.如果你看了本文有什么问 ...

  3. 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper

    1. 前言 今天继续搭建我们的kono Spring Boot脚手架,上一文把国内最流行的ORM框架Mybatis也集成了进去.但是很多时候我们希望有一些开箱即用的通用Mapper来简化我们的开发.我 ...

  4. 从零搭建Spring Boot脚手架(7):整合OSS作为文件服务器

    1. 前言 文件服务器是一个应用必要的组件之一.最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合.现如今时代不同了,开始流行起了OSS. Gitee: https: ...

  5. 从零搭建Spring Boot脚手架(7):Elasticsearch应该独立服务

    1. Spring Data Elasticsearch Spring Data Elasticsearch是Spring Data项目的子项目,提供了Elasticsearch与Spring的集成. ...

  6. 从零搭建Spring Boot脚手架(6):整合Redis作为缓存

    1. 前言 上一文我们整合了Mybatis Plus,今天我们会把缓存也集成进来.缓存是一个系统应用必备的一种功能,除了在减轻数据库的压力之外.还在存储一些短时效的数据场景中发挥着重大作用,比如存储用 ...

  7. 从零搭建Spring Boot脚手架(5):整合 Mybatis Plus

    1. 前言 在上一文中我根据Mybatis中Mapper的生命周期手动实现了一个简单的通用Mapper功能,但是遗憾的是它缺乏实际生产的检验.因此我选择更加成熟的一个Mybatis开发增强包.它就是已 ...

  8. 6、Spring Boot 2.x 集成 MyBatis

    1.6 Spring Boot 2.x 集成 MyBatis 简介 详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射. 完整源码: 1.6.1 创建 spring-bo ...

  9. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】06、Mybatis+SQLServer集成

    1.增加POM依赖 注意pagehelper插件,我重写过,可以到我的这篇文章了解https://www.cnblogs.com/LiveYourLife/p/9176934.html <dep ...

随机推荐

  1. 数据可视化之powerBI技巧(十五)采悟:Power BI动态技巧:动态显示数据层级

    今天给大家分享一个动态显示数据层级的技巧,效果如下: 无论想按什么维度.什么顺序查看分析数据,只需要选择不同的切片器组合就行了. 方法如下:01 | 把数据聚合为分析需要的最细粒度 本文假设最细分析粒 ...

  2. 机器学习实战基础(二十五):sklearn中的降维算法PCA和SVD(六) 重要接口,参数和属性总结

    到现在,我们已经完成了对PCA的讲解.我们讲解了重要参数参数n_components,svd_solver,random_state,讲解了三个重要属性:components_, explained_ ...

  3. 爬虫前篇 /https协议原理剖析

    爬虫前篇 /https协议原理剖析 目录 爬虫前篇 /https协议原理剖析 1. http协议是不安全的 2. 使用对称秘钥进行数据加密 3. 动态对称秘钥和非对称秘钥 4. CA证书的应用 5. ...

  4. Python之爬虫(二十一) Scrapy爬取所有知乎用户信息(下)

    在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在:https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 cla ...

  5. python处理json总结

    一.首先,了解下什么是JSON? JSON:JavaScript Object Notation [JavaScript 对象表示法] JSON 是一种轻量级的数据交换格式,完全独立于任何程序语言的文 ...

  6. ASP.NET Core3.1使用Identity Server4建立Authorization Server

    前言 网上关于Identity Server4的资料有挺多的,之前是一直看杨旭老师的,最近项目中有使用到,在使用.NET Core3.1的时候有一些不同.所以在此记录一下. 预备知识: https:/ ...

  7. 没内鬼,来点干货!SQL优化和诊断

    SQL优化与诊断 Explain诊断 Explain各参数的含义如下: 列名 说明 id 执行编号,标识select所属的行.如果在语句中没有子查询或关联查询,只有唯一的select,每行都将显示1. ...

  8. CSS3伪类 :empty

    :empty 种类:伪类选择器 版本:CSS3.0 用法:匹配每个没有子元素(包含文本)的元素. 例子: <!DOCTYPE html> <html> <head> ...

  9. C++语法小记---友元

    友元函数 延续C语言的结构体编程方式,直接访问类的私有成员,提高效率 友元分为函数友元和类友元 友元函数可以访问类的所有成员 友元类的所有成员函数都是友元函数 友元不具备传递性 友元函数和类的成员函数 ...

  10. Selenium自动化:有代码测试与无代码测试。这些你都懂了吗?

    大多数测试人员认为 Selenium是满足其测试自动化需求的自动化框架.作为全球测试人员使用的开放源框架, Selenium 无疑是测试人员适应日趋敏捷的公司的一种好方法.实际上, Selenium仍 ...