美文网首页
Spring Boot教程 - 整合Mybatis(注解方式)

Spring Boot教程 - 整合Mybatis(注解方式)

作者: FX_SKY | 来源:发表于2017-11-18 17:47 被阅读271次

    上一篇文章:Spring Boot教程 - 整合Mybatis(基于XML配置) 介绍了 Spring Boot集成Mybatis 基于XML方式的配置,本文将重点介绍 注解方式配置Mybatis 。

    开发环境

    • JDK 1.8
    • Maven 3.3
    • Spring Boot 1.5.8.RELEASE
    • Mybatis 3.4.4

    配置

    首先引入spring-boot-starter-parent:

        <!-- Inherit defaults from Spring Boot -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
        </parent>
    

    添加Mybatis依赖:

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
    
            <!-- db-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
        </dependencies>
    

    application.yml

    server:
      port: 9000
      
    spring:
        datasource:
           url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
           username: root
           password: root
           driver-class-name: com.mysql.jdbc.Driver
    

    MybatisConfiguration

    package springboot.tutorials.mybatis.annotation.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import javax.sql.DataSource;
    
    /**
     * @author Ricky Fung
     */
    @Configuration
    @MapperScan(basePackages = "springboot.tutorials.mybatis.annotation.mapper",
            sqlSessionFactoryRef = "sqlSessionFactory")
    public class MybatisConfiguration {
    
        static final String MAPPER_LOCATION = "classpath:mapper/*.xml";
    
        @Value("${spring.datasource.url}")
        private String url;
    
        @Value("${spring.datasource.username}")
        private String user;
    
        @Value("${spring.datasource.password}")
        private String password;
    
        @Value("${spring.datasource.driver-class-name}")
        private String driverClass;
    
        @Bean(name = "sqlSessionFactory")
        public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)
                throws Exception {
            final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSource);
            sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources(MAPPER_LOCATION));
            return sqlSessionFactoryBean.getObject();
        }
    
        @Bean(name = "dataSource")
        public DataSource dataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driverClass);
            dataSource.setUrl(url);
            dataSource.setUsername(user);
            dataSource.setPassword(password);
            return dataSource;
        }
    
        @Bean(name = "transactionManager")
        public DataSourceTransactionManager transactionManager() {
            return new DataSourceTransactionManager(dataSource());
        }
    }
    
    

    涉及到的Mybatis Mapper类和Mapper文件 建议通过Mybatis-Generator来自动生成,简单、高效。

    启动类App

    package springboot.tutorials.mybatis.annotation;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * @author Ricky Fung
     */
    @SpringBootApplication
    public class App {
    
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    

    源码

    传送门:spring-boot-mybatis3-annotation-config

    相关文章

      网友评论

          本文标题:Spring Boot教程 - 整合Mybatis(注解方式)

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