Spring 整合 MyBatis 就是把Spring和MyBatis应用到同一个项目中;其中MyBatis提供数据库相关的操作,完成对象数据和关系数据的转换;Spring完成项目的管理,通过IOC和AOP完成依赖注入,事务管理等
1.建立maven项目,导入依赖
<!-- Spring上下文容器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!--Spring整合MyBatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!-- 事务管理依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!-- 连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>
2.书写配置类,完成数据源配置、SqlSessionFactory的配置,事务管理器配置
@Configuration
@ComponentScan(basePackages = "com.project")
@EnableTransactionManagement // 允许使用Transactional注解配置事务
@MapperScan("com.project.dao") // 扫描指定位置下的映射文件
public class Config {
// 配置数据源
@Bean
public DataSource getDataSource(){
// 创建连接池数据源对象
DruidDataSource dataSource = new DruidDataSource();
// 设置驱动
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 设置数据库url
dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisdemo?characterEncoding=utf-8&allowMultiQueries=true");
// 设置mysql登录用户名
dataSource.setUsername("root");
// 设置mysql登录密码
dataSource.setPassword("root");
// 连接池相关配置
// 设置连接池最大连接数
dataSource.setMaxActive(50);
// 设置连接池最小连接数
dataSource.setMinIdle(20);
// 连接池超时时间
dataSource.setMaxWait(2000);
return dataSource;
}
// 添加mysql的会话工厂
@Bean
public FactoryBean getFactory(){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
// 设置数据源
factoryBean.setDataSource(this.getDataSource());
// 加载MyBatis主配置文件
factoryBean.setConfigLocation(new ClassPathResource("mybatis.cfg.xml"));
return factoryBean;
}
// 添加事务管理器
@Bean
public TransactionManager getTransactionManager(){
DataSourceTransactionManager trans =
new DataSourceTransactionManager();
// 设置数据源
trans.setDataSource(this.getDataSource());
return trans;
}
}
3.导入MyBatis主配置文件,导入持久接口的映射文件
测试框架
1.导入测试依赖
<!-- junit 测试框架-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- spring测试框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.7.RELEASE</version>
<scope>test</scope>
</dependency>
2.在工程test目录中书写测试类
@RunWith(SpringJUnit4ClassRunner.class) // 获取测试运行环境
@ContextConfiguration(classes = ApplicationConfig.class) // 获取SpringContext容器
public class TestService {
@Autowired
private ICarService carService;
@Test // 测试方法必须要加上@Test注解,才能运行
public void testAdd(){
}
}