SpringBoot整合Mybatis

183 阅读2分钟

Spring整合篇:Mybatis - 掘金 (juejin.cn),我在这篇分享了Spring整合Mybatis的过程和注意事项。

SpringBoot整合Mybatis非常迅速,它给我们做了很多自动注入的配置,使得我们专心于:Mapper接口及XML配置文件的开发即可。

我们先了解如何整合,然后再看看SpringBoot为我们做了哪些事。

依赖

  • mybatis-spring-boot-starter是SpringBoot整合mybatis的starter。
  • mysql-connector-java是mysql连接Java的驱动。
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

配置类

不用再编写mybatis-config.xml配置文件了。全都在SpringBoot的application.properties中配置Mybatis的配置内容:

mybatis – MyBatis 3 | 配置

例如,设置数据库列名的驼峰映射以及对实体类命名的别名设置:

mybatis.type-aliases-package=com.linkedbear.boot.mybatis.entity
mybatis.configuration.map-underscore-to-camel-case=true

SpringBoot进行整合的还有一个好处是,原先的数据源需要我们手动去创建对象或者在Mybatis中的环境中指定dataSource,现在统一在SpringBoot的配置类中做配置即可:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/juejindb?useSSL=false&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root

这样已经完成Mybatis的配置类的工作了。

Mapper

Mapper无论怎么样都没有任何变化,这和之前的工作(原始的,以及Spring整合Mybatis)都一样。

public interface UserMapper{
    // 写一些需要操作的接口
}

这里我想讲的重点在xml中,以及如何让在SpringBoot中,容器怎么去管理它。

  1. xml的位置

这个存放位置是有讲究的,如果UserMapper的路径是top.chengyunlai.mapper,那么xml文件的路径应该是这样classpath:top.chengyunlai.mapper/*.xml。如果两者文件不一样的话,那就需要在application.properties中指定位置:

mybatis.mapper-locations=classpath:mapper/*.xml

如果路径建议的路径,则配置可以忽略。

之后在XML中的命名空间照常写Mapper类的全类路径,就将xml配置文件和Mapper接口绑定起来了,接下去考虑的就是如何将Mapper交给容器管理。

  1. 交给Spring管理的两种方式

@Mapper和@MapperScan

哦,请原谅我用一个三级标题这么突兀的方式,那纯粹是为了让你清楚的定位到你想看的地方,可能你正疑惑这两个注解。

这两个注解的作用都是一样:将Mapper交给Spring容器去管理最终生成代理。

它们的区别是:

  1. @Mapper是写在Mapper类上,一个一个的写,就像@Component一样的含义。
  2. @MapperScan("...")是的,它里面可以放一个路径,这个路径可以是一个包下的Mapper接口,就省得写@Mapper了。

其他工作

  1. SQL建表;
  2. 写实体类;
  3. 写SQL;
  4. 写Service类;
  5. 写测试或者控制类测试。