3.Spring+MyBatis

94 阅读1分钟

1.导入整合坐标

图片.png

2.Spring配置文件

@Configuration
@ComponentScan("com.itheima")

//加载properties,后缀 properties 是一种属性文件。这种文件以key=value格式存储内容
@PropertySource("classpath:jdbc.properties")

//引入我们自己写的第三方
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig{
    
}

3.JdbcConfig.java第三方整合

这些值全部来自于jdbc.properties

public class JdbcConfig{
    @Value("${jdbc.driver}")
    private String driver;
    
    @Value("${jdbc.url}")
    private String url;
    
    @Value("${jdbc.username}")
    private String userName;
    
    @Value("${jdbc.password}")
    private String password;
    
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }    
}

4.MyBatisConfig配置文件

图片.png

配置第三方bean,需要使用@Bean

通过配置,可以代替上方的数据

通过SqlSessionFactoryBean生成的对象,通过具体方法调用 使用@Bean注解,定义的bean、要想注入引用类型,要在形参上注入

public class MybatisConfig{
    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();        
        ssfb.setDataSource(dataSource)
        return ssfb;
    }
}

图片.png

整合Spring映射包

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

图片.png

映射接口(使用了注解)

就没有映射的.xml文件了

图片.png

服务器调用接口实现类

图片.png

测试类

public static void main(String[] args){
    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
    AccountService accountService = ctx.getBean(AccountService.class);
    Account ac = accountService.findById(2);
    System.out.println(ac);
}

整合JUnit

导入坐标

图片.png

执行

设定类运行器,这个是Spring整合JUnit专用的类运行器
@RunWith(SpringJUnit4ClassRunner.class)
配
@ContextConfiguration(classes = SpringConfig.class)
public class AccountServiceTest{
    @Autowired
    private AccountService accountService;
    
    @Test
    public void testFindById(){
        System.out.println((accountService.findById(2));
    }
    @Test
    public void testFindAll(){
        System.out.println(accountService.findAll());
    }
}