美文网首页spring boot相关征服SpringSpring-Boot
spring boot使用总结(六)spring boot+my

spring boot使用总结(六)spring boot+my

作者: joyhj | 来源:发表于2016-12-30 15:10 被阅读421次
    1. mybatis是比较常用的数据库框架,在spring boot使用mybatis需要在pom文件中增加如下配置:
           <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.2.3</version>
          </dependency>
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis-spring</artifactId>
              <version>1.2.2</version>
          </dependency>
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
          </dependency>
    
    1. 配置数据库连接,如果是使用默认的tomcat作为内嵌的web服务器,需要增加如下配置:
           <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
            </dependency>
    
    1. 配置单个数据库连接
    @Configuration
    public class DatabaseConfig {
        @Bean
        @ConfigurationProperties(prefix = "test.datasource")
        public DataSource dataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean
        public SqlSessionFactory sqlSessionFactory(DataSource dataSource)
                throws Exception {
            SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(dataSource);
            return sessionFactory.getObject();
        }
    
        @Bean
        public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
    

    使用 @ConfigurationProperties(prefix = "test.datasource")可以直接从application.xml中读取数据库的配置信息。
    application.xml文件中的数据库配置信息如下:

    test.datasource.url=jdbc:mysql://10.10.10.10:3306/testdb?characterEncoding=utf-8
    test.datasource.username=test
    test.datasource.password=test
    test.datasource.driverClassName=com.mysql.jdbc.Driver
    test.datasource.test-on-borrow=true
    test.datasource.validation-query=SELECT 1
    
    1. 配置多个数据库连接。如果项目中需要连接多个数据库,可以分别进行配置,例如要连接两个数据库test1,test2,可以这么写,首先配置第一个数据库:
    @Configuration
    public class FirstDatabaseConfig {
    
        @Bean
        @Primary
        @ConfigurationProperties(prefix = "test1.datasource")
        public DataSource dataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean
        @Primary
        public SqlSessionFactory sqlSessionFactory(DataSource dataSource)
                throws Exception {
            SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(dataSource);
            return sessionFactory.getObject();
        }
    
        @Bean
        @Primary
        public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
    

    需要注意的是,如果有超过一个数据库,需要指定一个数据库为首选数据库,用@Primary注解标注出来。在创建DataSource,SqlSessionFactory,SqlSessionTemplate时都需要标注出来。
    另外如果不特别用 @Bean的name属性写明bean的变量名的话,bean的默认变量名为创建bean的方法名,例如上文DataSource的实例的变量名为dataSource。
    然后再配置第二个数据库:

    @Configuration
    public class SecondDatabaseConfig {
    
        @Bean
        @ConfigurationProperties(prefix = "test2.datasource")
        public DataSource secondDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean
        public SqlSessionFactory secondSqlSessionFactory(
                @Qualifier("secondDataSource") DataSource dataSource)
                throws Exception {
            SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(dataSource);
            return sessionFactory.getObject();
        }
    
        @Bean
        public SqlSessionTemplate secondSqlSessionTemplate(
                @Qualifier("secondSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
    

    在创建第二个数据库时,需要注意的是要使用@Qualifier注解来说明要注入的实例的变量名是什么。如果不用@Qualifier注解,会注入首选实例,即用@Primary注解标明的实例。

    版本说明:spring boot版本为1.4.0.RELEASE,其他组件版本见pom文件

    参考文档:

    1. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html
    2. http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConfigurationProperties.html
    3. http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html
    4. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Qualifier.html

    相关文章

      网友评论

        本文标题:spring boot使用总结(六)spring boot+my

        本文链接:https://www.haomeiwen.com/subject/iyymvttx.html