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

  • 相关阅读:
    Cookie技术
    国海证券:36氪(KRKR):新经济内容平台龙头,多元变现可期
    Java复习-多线程编程
    读书,找资料,我的 SOP
    Visa股票仍然值得投资
    10月14日,每日信息差
    用CloudCompare软件拟合点云中的圆柱体
    容器【容器介绍、Set接口介绍、 HashSet容器的使用、TreeSet容器的使用】(三)-全面详解(学习总结---从入门到深化)
    SLA简介
    华为机试题:HJ4 字符串分隔
  • 原文地址:https://blog.csdn.net/Cey_Tao/article/details/126226523