关于spring以及整合MyBatis
一 IOC [] (控制反转)
所谓控制反转,就是我们将创建对象的权限由手动变成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;
}
}

浙公网安备 33010602011771号