• [Spring笔记] Spring-27-Spring整合MyBatis


    Spring-27-Spring整合MyBatis

    1、 Maven 依赖

    除了几个平常使用的依赖之外,还需要两个用于 Spring 操作数据库和整合 MyBatis 的依赖:spring-jdbc 和 mybatis-spring,如下

    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>5.2.10.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatis-springartifactId>
        <version>2.0.7version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2、SpringConfig 配置类

    @Configuration  // Spring 配置类注解
    @ComponentScan("com.xxx")   // 扫描 dao(Mapper 接口) 和 service
    @PropertySource("classpath:jdbc.properties")    // jdbc 相关配置文件
    @Import({JdbcConfig.class, MybatisConfig.class})    // 引入另外两个配置类
    public class SpringConfig {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、JdbcConfig 配置类

    获取 DataSource 的 bean,用于配置 MyBatis 的 SqlSessionFactoryBean,这里用阿里的 DruidDataSource 做示例

    public class JdbcConfig {
        // Value 中的值来自于 jdbc.properties 文件
        @Value("${jdbc.driver}")
        String driver;
        @Value("${jdbc.url}")
        String url;
        @Value("${jdbc.username}")
        String username;
        @Value("${jdbc.password}")
        String password;
    
        @Bean
        public DataSource dataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driver);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            return dataSource;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4、MybatisConfig 配置类

    MybatisConfig 中需要配置两个 Bean,SqlSessionFactoryBean 用于生成 SqlSessionFactory,MapperScannerConfigurer 用于扫描 Mapper 映射接口

    public class MybatisConfig {
        @Bean
        public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
            SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
            // 对应 xml 配置中的  内的  标签
            ssfb.setTypeAliasesPackage("com.xxx.domain");
            // 对应 xml 配置中的  标签
            ssfb.setDataSource(dataSource);
            return ssfb;
        }
    
        @Bean
        public MapperScannerConfigurer mapperScannerConfigurer() {
            MapperScannerConfigurer msc = new MapperScannerConfigurer();
            // 对应 xml 配置中的   内的  标签
            msc.setBasePackage("com.xxx.dao");
            return msc;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    5. 获取 dao 和 service

    在 dao(Mapper 接口) 和 service 类上添加 @Component 注解即可通过 ApplicationContext 获取实例

    public class App {
        public static void main(String[] args) {
            ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
            // 按类型获取 dao
            AccountDao accountDao = ctx.getBean(AccountDao.class);
            System.out.println(accountDao.findById(1));
            // 按类型获取 service
            AccountService accountService = ctx.getBean(AccountService.class);
            System.out.println(accountService.findById(2));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=29

  • 相关阅读:
    MDC 实现 traceId 记录
    金融企业为啥不选择云服务器还是考虑服务器托管
    Python经典练习题(一)
    Vulkan与OpenGL对比——Vulkan的全新渲染架构
    NX/UG二次开发—Parasolid—PK_EDGE_ask_convexity
    【Swift】NSSearchField用法和示例
    JavaScript 65 JavaScript 类 65.2 JavaScript 类继承
    学姐突然问我键盘怎么选?原来是为了这个...
    vue2单元测试
    小白学java
  • 原文地址:https://blog.csdn.net/Cey_Tao/article/details/126226523