Spring整合mybatis(基于注解)
Spring整合mybatis(基于注解)
思路:用一系列的注解名来传入相应的xml文件所提供的信息
-
首先是导入配置Spring核心配置文件 @Configuration //该注解声明该类是一个配置类,该注解可以省略不写 @ComponentScan("com.itheima") //开启Spring注解组件扫描 @Import({ MybatisConfig.class}) //引入其他的配置类文件 public class SpringConfig { } jdbc相关配置 @Configuration //该注解声明该类是一个配置类,不能省略 //读取jdbc相关配置 @PropertySource("classpath:jdbc.properties") public class JdbcConfig { //非自定义变量赋值 @Value("${jdbc.driver}") 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 createDataSource() //创建Druid连接池对象 DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClassName); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } } mybatis相关配置 @Configuration//声明是配置类 @Import(JdbcConfig.class) //引入jdbc文件配置信息 public class MybatisConfig { //设置连接池 @Bean public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){ SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean(); //设置连接池 sqlSessionFactoryBean.setDataSource(dataSource); //起别名 sqlSessionFactoryBean.setTypeAliasesPackage("com.itheima.domain"); return sqlSessionFactoryBean; } //配置映射接口 @Bean public MapperScannerConfigurer getMapperScannerConfigurer(){ MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer(); //设置基包 mapperScannerConfigurer.setBasePackage("com.itheima.dao"); return mapperScannerConfigurer; } } javaBean相关配置 @Component(""):所有Bean对象 @Service(""):service层 @Controller(""):controller层 @repository(""):dao层 @Scope(""):控制Bean的作用范围,默认是singleton,还有非单列的选项,protoType @Component("accountService") public class AccountServiceImpl implements AccountService { //自动匹配:顺序.先按数据类型匹配,只有唯一的就直接赋值,若没有唯一则再按变量名匹配,若再不唯一则用 @qualifier("")匹配 @Autowired @Qualifier("accountDao") // @Resource(name="")是以上两者的总和,但是它匹配是按name属性来匹配的. private AccountDao accountDao; public void save(Account account) { accountDao.save(account); } public void update(Account account) { accountDao.update(account); } public void delete(Integer id) { accountDao.delete(id); } public Account findById(Integer id) { return accountDao.findById(id); } public List<Account> findAll() { return accountDao.findAll(); } } 加载主配置类 //ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml"); //加载ioc容器 ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfig.class); //获取类对象 AccountService accountService = (AccountService) app.getBean("accountService"); List<Account> all = accountService.findAll(); System.out.println(all); //获取连接池 DataSource dataSource = (DataSource) app.getBean("dataSource"); Connection connection = dataSource.getConnection(); System.out.println(connection);
