自学内容网 自学内容网

Spring Boot 进阶-详解Spring Boot整合数据库

在这里插入图片描述
  在之前的例子中,我们介绍了如何在Spring Boot 框架中添加数据源配置。这篇文章我们来详细介绍一下如何整合Mybatis框架。

整合Mybatis框架

  还是按照之前的套路,我们要整合Mybatis框架,首先需要加载对应的场景启动器。这里我们引入由Mybatis提供的整合Spring Boot的场景启动器。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

  第二步,我们来研究一下对应的自动配置类MybatisAutoConfiguration,代码如下

@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class })
public class MybatisAutoConfiguration implements InitializingBean {

  这里通过自动配置类加载的配置类是MybatisProperties,它的配置前缀如下代码所示

@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {

  public static final String MYBATIS_PREFIX = "mybatis";

  从代码中可以看出它是以mybatis开头的。也就是说我们在全局配置文件中需要通过mybatis开头的配置来对其进行属性绑定。在其配置类中有如下几个配置项需要我们注意。

/**
   * Location of MyBatis xml config file.
   */
  // 配置 Mybatis.xml的加载路径
  private String configLocation;

  /**
   * Locations of MyBatis mapper files.
   */
  // 配置Mapper文件映射路径
  private String[] mapperLocations;

  /**
   * Packages to search type aliases. (Package delimiters are ",; \t\n")
   */
  // 实体类包的别名
  private String typeAliasesPackage;

  /**
   * The super class for filtering type alias. If this not specifies, the MyBatis deal as type alias all classes that
   * searched from typeAliasesPackage.
   */
  private Class<?> typeAliasesSuperType;

  /**
   * Packages to search for type handlers. (Package delimiters are ",; \t\n")
   */
  private String typeHandlersPackage;

  这里需要注意的配置有如下几个,基本上我们其他的配置也少有用到。

# MyBatis配置
mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.**.domain
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath*:mapper/**/*Mapper.xml
    # 加载全局的配置文件
    configLocation: classpath:mybatis/mybatis-config.xml

  在之前演示配置相关内容的时候我们也对其源码进行过分析,这里需要注意的一点就是如下的一段代码

@Bean
  @ConditionalOnMissingBean
  public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
    factory.setDataSource(dataSource);

  我们会看到这里如果我们没有特殊去设置SqlSessionFactory配置的时候,会自动注入默认的Factory进行配置,但是在一般情况下,我们都需要自定义一个SqlSessionFactory。代码如下。

@Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
    {
        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
        String mapperLocations = env.getProperty("mybatis.mapperLocations");
        String configLocation = env.getProperty("mybatis.configLocation");
        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
        VFS.addImplClass(SpringBootVFS.class);

        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
        return sessionFactory.getObject();
    }

  上面介绍了Mybatis的数据库的配置方式。结合之前讲解配置原理中引入的Mybatis相关配置源码信息,我们可以更好的理解Mybatis在配置中相关的配置内容


原文地址:https://blog.csdn.net/nihui123/article/details/142735174

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!