spring-mybatis整合


目录
  • spring-mybatis整合
      • 准备工作,架包
      • 创建一个虚拟目录放配置文件
      • 开始配置spring的配置(applicationConfig.xml)
        • 整合mybatis部分
      • 注解的配置

spring-mybatis整合

准备工作,架包

创建一个虚拟目录放配置文件

开始配置spring的配置(applicationConfig.xml)

引入aop,context,tx的约束



spring的配置

 
    
    
    
    
    
    
        
        
        
        
        
        
    
   
   

    
    
        
       
    
    
    
    
        
            
            
            
            
            
        
    
    
    
        
    

整合mybatis部分

引出问题,怎样将mybatis的SqlSessionFactory,SqlSession,和创建接口代理对象呢?

/*
	 * 没有注入UserMapper,UserMapper是一个接口,无法实例化
	 * 在mybatis中,
	 * 1.创建SqlSessionFactory对象
	 * 2.再创建SqlSession对象
	 * 3.通过getMapper(UserMapper.class)来创建代理对象
	 * 
	 * ------------------------------------
	 * 解决方案:
	 *  	1.创建SqlSessionFactory对象
	 *  		将SqlSessionFactory对象交由spring容器来管理
	 *  		org.mybatis.spring.SqlSessionFactoryBean
	 * 		2.再创建SqlSession对象
	 * 			spring创建了sqlSessionFactory对象后会自动的创建SqlSession对象
	 * 		3.通过getMapper(UserMapper.class)来创建代理对象
	 * 			为接口创建代理对象(单个)
	 * 			org.mybatis.spring.mapper.MapperFactoryBean
	 * 			通过扫描包的形式创建代理对象
	 * 			org.mybatis.spring.mapper.MapperScannerConfigurer
	 * 	
	 * 
	 */

配置整合部分:


    
     
      
     
    
        
        
        
        
            
               
               
               classpath:/cn/zj/ssm/mapper/*UserMapper.xml
            
        
       
       
       
       
    
    
    
   
    
        
        
        
        
        
        
        
     

注解的配置

SpringConfig

@Configuration
@ComponentScan("cn.zj.ssm")//扫描包
@PropertySource("classpath:db.properties")//扫描配置文件
@EnableTransactionManagement//开启事务的注解
@MapperScan("cn.zj.ssm.mapper")//开启创建xxxmapper接口代理对象的注解
public class SpringConfig {
	@Value("${jdbc.driverClassName}")
	private String driverClassName;
	@Value("${jdbc.url}")
	private String url;
	@Value("${jdbc.username}")
	private String username;
	@Value("${jdbc.password}")
	private String password;
	@Value("${jdbc.maxActive}")
	private int maxAcrive;
	
	//配置数据库连接池
	@Bean
	public DataSource getDataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(this.driverClassName);
		dataSource.setUrl(this.url);
		dataSource.setUsername(this.username);
		dataSource.setPassword(this.password);
		dataSource.setMaxActive(this.maxAcrive);
		return dataSource;
	}
	
	//配置事务管理器
	@Bean
	public PlatformTransactionManager getTxManager() {
		DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(getDataSource());
		return transactionManager;
	}
	
	//创建SqlSessionFactory
	@Bean
	public SqlSessionFactory getSqlSessionFactory() throws Exception {
		SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
		//配置数据源
		factoryBean.setDataSource(getDataSource());
		//配置别名
		factoryBean.setTypeAliasesPackage("cn.zj.ssm.pojo");
		return factoryBean.getObject();
	}
}