Springboot整合MyBatis(一:MyBatis-Spring-Boot-Starter)

凤昊东
2023-12-01

pom文件配置:增加mybatis的启动器依赖和驱动依赖

		<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>

启动器的作用:

  • 自动检测现有的数据源
  • 将创建并注册一个实例的SqlSessionFactory是通过数据源作为输入使用SqlSessionFactoryBean
  • 将创建并注册从SqlSessionFactory中获取SqlSessionTemplate的实例
  • 自动扫描您的映射器,将它们链接到SqlSessionTemplate并将它们注册到Spring上下文,以便可以将它们注入到您的bean中

Mybatis配置项:

属性作用
config-locationMybatis的xml配置文件的位置
check-config-locationMyBatis的xml配置文件执行状态检查
mapper-locations映射器xml配置文件的位置
type-aliases-package需要其别名的包,如果多个,可以通过 , 或者 ; 相隔
type-aliases-super-type指定需要映射别名类的父类,算是和type-aliases-package的合成一个并集吧。如果不指定,那么他就会扫描type-aliases-package下面所以的类
type-handlers-package类型转换处理器的包名
executor-type执行器的类型:SIMPLE, REUSE, BATCH
default-scripting-language-driver动态sql的脚本语言(默认脚本语言驱动程序)
lazy-initialization是否启用映射程序bean的延迟初始化

后面详细说明mybatis这方面的配置。
这些配置可以写在properties文件或者yml文件中

当然,也可以通过java配置。

@Configuration
public class MyBatisConfig {
  @Bean
  ConfigurationCustomizer mybatisConfigurationCustomizer() {
    return new ConfigurationCustomizer() {
      @Override
      public void customize(Configuration configuration) {
        // customize ...
      }
    };
  }
}

MyBatis Spring Boot Starter将检测实现MyBatis提供的以下接口的bean。

  • Interceptor (语句执行的拦截器)
  • TypeHandler (类型转换处理器)
  • LanguageDriver (动态sql的语言驱动)
  • DatabaseIdProvider (多种数据库软件的转换)
@Configuration
public class MyBatisConfig {
 @Bean
 MyInterceptor myInterceptor() {
   return MyInterceptor();
 }
 @Bean
 MyTypeHandler myTypeHandler() {
   return MyTypeHandler();
 }
 @Bean
 MyLanguageDriver myLanguageDriver() {
   return MyLanguageDriver();
 }
 @Bean
 VendorDatabaseIdProvider databaseIdProvider() {
   VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
   Properties properties = new Properties();
   properties.put("SQL Server", "sqlserver");
   properties.put("DB2", "db2");
   properties.put("H2", "h2");
   databaseIdProvider.setProperties(properties);
   return databaseIdProvider;
 }  
}

Customization for LanguageDriver(自定义语言驱动):
ThymeleafLanguageDriver:

@Configuration
public class MyBatisConfig {
  @Bean
  ThymeleafLanguageDriverConfig thymeleafLanguageDriverConfig() {
    return ThymeleafLanguageDriverConfig.newInstance(c -> {
      // ... customization code
    });
  }
}

FreeMarkerLanguageDriverConfig

@Configuration
public class MyBatisConfig {
  @Bean
  FreeMarkerLanguageDriverConfig freeMarkerLanguageDriverConfig() {
    return FreeMarkerLanguageDriverConfig.newInstance(c -> {
      // ... customization code
    });
  }
}

 类似资料: