Spring Boot和MyBatis的整合有两种方案:
1. 使用MyBatis官方提供的Spring Boot整合包实现,地址:https://github.com/mybatis/spring-boot-starter
2. 使用MyBatis和Spring的整合方式,也就是我们常规的整合方式。
推荐使用第二种,第一种在做后续的扩展不太方便,采用第二种,详细代码如下

第一步:创建MyBatis的配置文件

Spring Boot所谓的零配置是指和Spring相关的配置零配置,尽可能省去一切和Spring相关xml配置,但是MyBatis自身的配置还是要的,它和Spring有没有啥关系,只不过两者进行整合,但它还是一个独立的个体,配置MyBatis的基本xml文件:mybatis-config.xml。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- springboot省去的xml是指不需要Spring相关的xml配置,MyBatis自己的xml配置还是要保留 -->
    <settings>
        <!-- 驼峰的自动映射 -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>

    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql" />
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true" />
        </plugin>

        <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
            <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
            <property name="IDENTITY" value="MYSQL" />
            <!--通用Mapper接口,多个通用接口用逗号隔开 -->
            <property name="mappers" value="com.github.abel533.mapper.Mapper" />
        </plugin>
    </plugins>

</configuration>

第二步:配置数据源

MyBatis是对数据库的操作,涉及到连接池,所以需要数据源,可以直接在Spring Boot的启动类中进行配置

package com.hhu.cart;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.jolbox.bonecp.BoneCPDataSource;

@Configuration
@SpringBootApplication
//@ComponentScan(basePackages="com.hhu")
@PropertySource(value={"classpath:env.properties","classpath:httpclient.properties","classpath:jdbc.properties","classpath:log4j.properties"}, ignoreResourceNotFound=true)
public class TaotaoApplication {

    @Value("${jdbc.username}")
    private String jdbcUsername;

    @Value("${jdbc.password}")
    private String jdbcPassword;

    @Value("${jdbc.url}")
    private String jdbcUrl;

    @Value("${jdbc.driverClassName}")
    private String jdbcDriverClassName;

    @Bean(destroyMethod="close")
    public DataSource dataSource() {
        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();

        boneCPDataSource.setUsername(jdbcUsername);
        boneCPDataSource.setPassword(jdbcPassword);
        boneCPDataSource.setJdbcUrl(jdbcUrl);
        boneCPDataSource.setDriverClass(jdbcDriverClassName);

        //设置和数据库连接池中空间连接的时间剪个,默认240,如果取消则设为0
        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);

        //设置连接池中未使用的连接最大存活时间,默认值60,如果永远存活则设为0
        boneCPDataSource.setIdleMaxAgeInMinutes(30);

        //每个分区最大的连接数
        boneCPDataSource.setMaxConnectionsPerPartition(100);

        //每个区最小的连接数
        boneCPDataSource.setMinConnectionsPerPartition(5);

        return boneCPDataSource;
    }

    public static void main(String[] args) {
        SpringApplication.run(TaotaoApplication.class, args);
    }
}

第三步:配置Spring对MyBatis管理的配置

这一步其实就是通过Spring对MyBatis的管理获取SqlSessionFactoryBean,代码如下:

package com.hhu.cart.spring.config;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

/**
 * MyBatis和Spring的整合,以往多是xml的配置方式,这里改为注解的方式
 * @author Weiguo Liu
 * @data 2017年11月27日
 */
@Configuration
public class MyBatisConfig {

    /*
     * 在Application中创建了DateSource,这里配置MyBatis时直接注入即可
     * 如果这里不使用@Autowired注入,那么在下面sqlSessionFactoryBean
     * 方法中可以直接以形参的方式直接写,Spring会自动注入
     */
    @Autowired
    private DataSource dataSource;

    /*
     * 主要作用就是创建这个SqlSessionFactory
     */
    @Bean
    @ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
    public SqlSessionFactoryBean sqlSessionFactoryBean() {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        // 设置数据源
        sqlSessionFactoryBean.setDataSource(dataSource);
        // 设置mybatis的主配置文件
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/mybatis-config.xml");
        sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
        // 设置别名包
        sqlSessionFactoryBean.setTypeAliasesPackage("com.hhu.cart.pojo");

        return sqlSessionFactoryBean;
    }

}

第四步:配置MyBatis的扫描类

MyBatis对数据库的操作少不了SQL语句的mapper文件,这里主要实现对mapper文件的扫描。

package com.hhu.cart.spring.config;

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration//知名它是一个配置类
@AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化(存在SqlSessionFactory)之后再实例化该类
public class MapperScannerConfig {

    // mapper接口的扫描器
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.hhu.cart.mapper");
        return mapperScannerConfigurer;
    }

}

其他的和以前的SSM整合大同小异