Spring整合Mybatis

Spring中

Spring整合Mybatis要导入两个坐标

1:要导入在Spring中操作数据库的jar包

2:Spring和Mybatis融合一起要导入jar包:

这个包不是Spring的,他是Mybatis的,是Mybatis融合Spring

配置Spring文件SpringConfig:

数据源jdbcConfig:

在Spring配置文件中要想扫描到数据源Config,加注解

然后jdbcConfig上面要木加注解:@Configuration要么在Spring配置文件

加注解:import(JdbcConfig.class)

Mybatis配置类:

最后:

总结:

引入俩坐标

数据源正常做

Spring配置类:

增加了MybatisConfig(里面定义俩Bean(全固定格式(只需要改包名))):

在MybatisConfig配置文件里有两个Bean

package com.itheima.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MyBatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){

        SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.itheima.domain");
        return factoryBean;
    }

    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc=new MapperScannerConfigurer();
        msc.setBasePackage("com.heima.dao");


        return msc;
    }



        }

第一个bean:

@Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){

        SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.itheima.domain");
        return factoryBean;
    }

这段代码定义了一个使用@Bean注解的方法,该方法用于配置并返回一个SqlSessionFactoryBean实例。SqlSessionFactoryBean是MyBatis框架中用于创建SqlSessionFactory的工厂Bean,而SqlSessionFactory是MyBatis的核心组件,用于创建SqlSession实例。SqlSession是MyBatis中用于执行SQL语句和管理数据库事务的主要接口。

代码解析:

  1. @Bean注解表明这个方法会由Spring容器调用,以注册一个Bean到Spring应用上下文中。
  2. 方法名为sqlSessionFactoryBean,它接受一个DataSource类型的参数,这个参数通常由Spring配置管理。
  3. SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();这行代码创建了一个SqlSessionFactoryBean的实例。
  4. factoryBean.setDataSource(dataSource);这行代码设置了SqlSessionFactoryBean实例的数据源。数据源是数据库连接的抽象,MyBatis使用它来获取数据库连接。
  5. factoryBean.setTypeAliasesPackage("com.itheima.domain");这行代码告诉MyBatis扫描com.itheima.domain包下的所有类,并为它们创建别名。这样,在MyBatis的映射文件或注解中,就可以使用类名(不带包名)作为别名来引用这些类。
  6. 方法返回了配置好的SqlSessionFactoryBean实例。

使用场景:

  • 当Spring应用上下文启动时,Spring容器会调用这个方法,创建并注册一个SqlSessionFactory的Bean。
  • 之后,你可以在Spring配置中注入这个SqlSessionFactory,或者通过其他配置方式(如MapperScannerConfigurer)来自动扫描并注册Mapper接口。

注意事项:

  • 确保DataSource实例已经通过Spring配置正确创建并注入到这个方法中。
  • typeAliasesPackage属性设置的包路径应包含你希望在MyBatis中使用别名的实体类(domain classes)。
  • 通常,SqlSessionFactoryBean的配置会与DataSource的配置一起,放在Spring的配置类中,以实现MyBatis与Spring的整合。

这段代码是MyBatis与Spring整合时配置SqlSessionFactory的标准做法,它简化了MyBatis的配置过程,并允许Spring管理MyBatis的组件。

第二个Bean:

@Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc=new MapperScannerConfigurer();
        msc.setBasePackage("com.heima.dao");


        return msc;
    }

这段代码定义了一个使用@Bean注解的方法,该方法创建并返回一个MapperScannerConfigurer实例。MapperScannerConfigurer是Spring框架中用于自动扫描并注册MyBatis的Mapper接口到Spring容器中的配置类。通过这种方式,可以简化MyBatis与Spring整合时的配置工作。

代码解析:

  1. @Bean注解表明这个方法会由Spring容器调用,以注册一个Bean到Spring应用上下文中。
  2. 方法名为mapperScannerConfigurer,它不接受任何参数。
  3. MapperScannerConfigurer msc = new MapperScannerConfigurer();这行代码创建了一个MapperScannerConfigurer的实例。
  4. msc.setBasePackage("com.heima.dao");这行代码指定了Spring容器在初始化时需要扫描的包路径。MapperScannerConfigurer会扫描这个包及其子包下所有的接口,并自动注册它们为Spring的Bean。这些接口通常都是MyBatis的Mapper接口,用于定义SQL映射和操作数据库的方法。
  5. 方法返回了配置好的MapperScannerConfigurer实例。

使用场景:

  • 当Spring应用上下文启动时,Spring容器会调用这个方法,创建并注册一个MapperScannerConfigurer的Bean。
  • 之后,Spring容器会自动扫描com.heima.dao包及其子包下的所有接口,并将它们注册为Spring的Bean。这些接口通常需要使用@Mapper注解标记,以便MyBatis识别它们为Mapper接口。

注意事项:

  • 确保MapperScannerConfigurer实例的basePackage属性设置正确,以包含所有需要自动注册的Mapper接口。
  • 通常,MapperScannerConfigurer的配置会与SqlSessionFactory的配置一起,放在Spring的配置类中,以实现MyBatis与Spring的整合。
  • 如果你的Mapper接口使用了@Mapper注解,Spring会自动识别并注册这些接口为Bean。如果没有使用@Mapper注解,你可能需要在MapperScannerConfigurer中额外设置annotationClass属性。

通过使用MapperScannerConfigurer,可以避免手动为每个Mapper接口编写配置代码,从而简化了MyBatis与Spring整合的配置过程。

综上MyBatisConfig的配置类里所需要填写的东西:

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇