![6ddf72e98725c695513951892be61a86.png](https://i-blog.csdnimg.cn/blog_migrate/a978eb94b645f91bce1efec8cc26a2b4.jpeg)
图片来源网路
为啥写这篇文章呢,有人可能会说springBoot的mybatis的starter都有了写这篇文章不是多此一举吗?难道是真的吗?其实我一开始也是使用mybatis的starter的,但是当我需要配置一个让mybatis可以将执行sql语句打印出来的配置时,难到了我,所以才想和大家分享一下springBoot整合MyBatis的方法,如果大家有更好地方法,欢迎讨论。首先看一下项目的目录结构
工程的目录结构
![93ce84f13da6ceed9ad2fb8297838535.png](https://i-blog.csdnimg.cn/blog_migrate/b48dde1bacabae334b702f60a82b63e0.jpeg)
SpringBoot整合Mybatis的思路
1.设置数据源DataSource,我们使用@ConfigurationProperties来加载yml里数据源的配置
2.配置SqlSessionFactory在里面配置加载的xml配置文件和数据源
3.使用@MapperScan来扫描加载DAO层接口
4.在yml中配置相关参数
5.mybatis与数据库对应的文件生成可以参照之前写的还在手写Mybatis的xml文件,那你就OUT了
代码实现
1.引入相关jar
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2mysql mysql-connector-java 6.0.6com.alibaba druid 1.0.29org.projectlombok lombok 1.16.18
2.定义一个类,继承DruidDataSource,负责数据源的属性加载和初始化数据源
//为代码清晰去除相关引用@ConfigurationProperties(prefix = DataSourceSettings.PREFIX)@Datapublic class DataSourceSettings extends DruidDataSource { public static final String PREFIX = "druid.dataSource"; private String mapperLocations;}
3.设置扫描mapper的路径和初始化SqlSessionFactoryBean
//为代码清晰去除相关引用@Configuration@MapperScan(basePackages = {"com.example.demo.mapper"})@EnableConfigurationProperties(DataSourceSettings.class)public class DataSourceAutoConfiguration {//DataSourceSettings继承DruidDataSource,所以也是数据源 @Autowired DataSourceSettings settings;//SqlSessionFactoryBean相关配置 @Bean public SqlSessionFactoryBean sqlSessionFactory(ApplicationContext applicationContext) throws IOException { SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();//配置数据源 sqlSessionFactory.setDataSource(settings);//日志主要为打印SQL语句 Properties properties = new Properties(); properties.setProperty("logImpl