关于spring以及整合MyBatis

 

一  IOC  [Inversion Of Control]  (控制反转)

  所谓控制反转,就是我们将创建对象的权限由手动变成spring帮我们创建.  化主动为被动. 这样做起到一个解耦合的目的.

 

二   DI  [Dependency Injection]  (依赖注入)

    所谓 依赖注入,就是 告诉 Spring,我们创建的对象里面可能存在字段,叫它给我们的字段 赋值 or 创建对象.

 

 

三   整合 mybaties

    3.1通过配置文件 整合 mybaties 的三大步:

  <!--  导入连接数据库的配置文件  -->
  <context:property-placeholder location="classpath:jdbcConfig.properties"/>

  <!-- 连接数据库 这个用name 和 id 都是可以的 name不过是起一个别名 -->
  <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
   <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
  </bean>


  <!-- 获取sqlSession相关的配置,同时整合了MyBaties.xml里面的东西,所以MyBaties.xml就可以删了-->
  <bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定连接池 -->
<property name="dataSource" ref="dataSource"/>

<!-- 配置别名 (给bean文件夹) -->
<property name="typeAliasesPackage" value="com.ty.bean"/>

<!-- 配置映射文件 (Mapper) -->
<property name="mapperLocations" value="classpath:StudentMapper.xml"/>
</bean>


  <!-- 扫描mapper文件,生成代理对象 -->
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="com.ty.mapper"/>
  </bean>

  <!--用spring创建我们需要的对象,这里面能够关联到 studentMapper 原因是 上面扫描自动生成了mapper -->
  <!-- 这里的id 是创建 的 对象名字 -->
  <bean id="studentService" class="com.ty.service.impl.StudentServiceImpl">
  <property name="studentMapper" ref="studentMapper"/>
  </bean>

 

  3.2  通过注解整合MyBaties

    1 用SpringConfig.java  代替  ApplicationConfig.xml .

    //标识这个一个配置类[可以不写]
    @Configuration
    //扫描器
    @ComponentScan("com.itheima")
    //引入外部资源
    @PropertySource("classpath:jdbcConfig.properties")
    //关联分配置类
    @Import({JDBCConfig.class,MybatisConfig.class})

    2 分配置类
      2.1 用JDBCConfig.java 代替 JDBCConfig.xml
        
//这个分配置的作用是 获取连接池
public class JDBCConfig {

@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;

//这是给返回值对象起一个名字
@Bean("dataSource")
public DataSource getDataSource(){
DruidDataSource druidDataSource=new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}

}
      

  2.2 用MyBatiesConfig.java 代替 MyBatiesConfig.xml

 

public class MybatisConfig {

//这个方法返回一个sqlSessionFactoryBean对象
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){
SqlSessionFactoryBean ssfb=new SqlSessionFactoryBean();
ssfb.setDataSource(dataSource);
ssfb.setTypeAliasesPackage("com.itheima.bean");
return ssfb;
}

//这个方法时扫描mapper,返回一个mapper对象
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.ty.mapper");
return mapperScannerConfigurer;
}

}

 

posted @ 2021-05-31 22:04  aPumaAtLarge  阅读(60)  评论(0)    收藏  举报