具体代码
1. 配置类
@Configuration // 标注当前类是一个配置类(替代配置文件) + @Component @ComponentScan({"com.edu"}) // 扫描包<context:component-scan base-package="com.edu"/> @PropertySource({"classpath:jdbc.properties"}) // 加载配置文件 <context:property-placeholder location="jdbc.properties"/> @Import(OtherBean.class) // 导入其他Bean <import resource="otherBean.xml"/> // Mapper的接口扫描 @MapperScan("com.edu.mapper") public class SpringConfig { @Bean public DataSource dataSource( @Value("${jdbc.driverClassName}") String driver, @Value("${jdbc.url}") String url, @Value("${jdbc.username}") String username, @Value("${jdbc.password}") String password ){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driver); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } @Bean public SqlSessionFactoryBean sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource){ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); return sqlSessionFactoryBean; } }
2. service
@Service("userService") public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void show() { List<User> all = userMapper.findAll(); for (User user : all){ System.out.println(user); } }
}
3. mapper
<select id="findAll" resultType="com.edu.pojo.User"> select * from tb_user </select>
4. out
原理剖析
spring与mybatis注解方式整合有个重要的技术点就是@import,第三方框架与Spring整合xml方式很多是凭借自定义标签完成的,而第三方框架与Spring整合注解方式很多靠@Import注解完成
@Import可以导入如下三种类
~~ 普通的配置类
~~ 实现ImportSelector接口的类
~~ 实现ImportBeanDefinitionRegistrar接口的类