Spring Boot 集成 MyBatis

作者丨武哥
来源丨武哥聊编程
1. MyBatis 介绍大家都知道,MyBatis 框架是一个持久层框架,是 Apache 下的顶级项目 。Mybatis 可以让开发者的主要精力放在 sql 上,通过 Mybatis 提供的映射方式,自由灵活的生成满足需要的 sql 语句 。使用简单的 XML 或注解来配置和映射原生信息,将接口和 JAVA 的 POJOs 映射成数据库中的记录,在国内可谓是占据了半壁江山 。本文主要通过两种方式来对 Spring Boot 集成 MyBatis 做一讲解 。重点讲解一下基于注解的方式 。因为实际项目中使用注解的方式更多一点,更简洁一点,省去了很多 xml 配置(这不是绝对的,有些项目组中可能也在使用 xml 的方式) 。
2. MyBatis 的配置2.1 依赖导入Spring Boot 集成 MyBatis,需要导入 mybatis-spring-boot-starter 和 MySQL 的依赖,这里我们使用的版本时 1.3.2,如下:
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency>我们点开 mybatis-spring-boot-starter 依赖,可以看到我们之前使用 Spring 时候熟悉的依赖,就像我在课程的一开始介绍的那样,Spring Boot 致力于简化编码,使用 starter 系列将相关依赖集成在一起,开发者不需要关注繁琐的配置,非常方便 。
<!-- 省去其他 --><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId></dependency>2.2 properties.yml配置我们再来看一下,集成 MyBatis 时需要在 properties.yml 配置文件中做哪些基本配置呢?
# 服务端口号server:  port: 8080# 数据库地址datasource:  url: localhost:3306/blog_testspring:  datasource: # 数据库配置    driver-class-name: com.mysql.jdbc.Driver    url: jdbc:mysql://${datasource.url}?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=10    username: root    password: 123456    hikari:      maximum-pool-size: 10 # 最大连接池数      max-lifetime: 1770000mybatis:  # 指定别名设置的包为所有entity  type-aliases-package: com.itcodai.course10.entity  configuration:    map-underscore-to-camel-case: true # 驼峰命名规范  mApper-locations: # mapper映射文件位置    - classpath:mapper/*.xml我们来简单介绍一下上面的这些配置:关于数据库的相关配置,我就不详细的解说了,这点相信大家已经非常熟练了,配置一下用户名、密码、数据库连接等等,这里使用的连接池是 Spring Boot 自带的 hikari,感兴趣的朋友可以去百度或者谷歌搜一搜,了解一下 。
这里说明一下 map-underscore-to-camel-case: true,用来开启驼峰命名规范,这个比较好用,比如数据库中字段名为:user_name,那么在实体类中可以定义属性为 userName (甚至可以写成 username,也能映射上),会自动匹配到驼峰属性,如果不这样配置的话,针对字段名和属性名不同的情况,会映射不到 。
3. 基于 xml 的整合使用原始的 xml 方式,需要新建 UserMapper.xml 文件,在上面的 application.yml 配置文件中,我们已经定义了 xml 文件的路径:classpath:mapper/*.xml,所以我们在 resources 目录下新建一个 mapper 文件夹,然后创建一个 UserMapper.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="com.itcodai.course10.dao.UserMapper">  <resultMap id="BaseResultMap" type="com.itcodai.course10.entity.User">    <id column="id" jdbcType="BIGINT" property="id" />    <result column="user_name" jdbcType="VARCHAR" property="username" />    <result column="password" jdbcType="VARCHAR" property="password" />  </resultMap>     <select id="getUserByName" resultType="User" parameterType="String">       select * from user where user_name = #{username}  </select></mapper>


推荐阅读