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

  • 相关阅读:
    python气象科研学习路线和常用技巧
    Linux - 系统性能监控命令
    代码整洁之道-读书笔记之单元测试
    表达式的动态解析和计算,Flee用起来真香
    计算机毕业设计(附源码)python中小学在线考试系统
    scrollIntoView多重校验rules滚动到指定位置
    Linux中重定向应注意的事情
    400G QSFP-DD SR8光模块应用场景解析
    页面查询多项数据组合的线程池设计
    LeetCode - #55 跳跃游戏
  • 原文地址:https://blog.csdn.net/Cey_Tao/article/details/126226523