MyBatis详解:spring和mybatis整合
Spring和MyBatis整合主要涉及到配置文件的编写,以下是整合的核心步骤和示例配置:
- 添加依赖:确保你的项目中包含Spring和MyBatis的相关依赖。
- 配置数据源:在Spring配置文件中配置数据库连接池。
- 配置SqlSessionFactory:通过SqlSessionFactoryBean创建SqlSessionFactory实例。
- 配置事务管理器:配置Spring的事务管理器,并指定使用DataSourceTransactionManager。
- 开启注解事务管理:在配置类上使用
@EnableTransactionManagement
注解。 - 配置MyBatis扫描器:指定MyBatis的mapper接口所在的包路径。
以下是一个简化的示例配置:
<!-- 引入数据库配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="mapperLocations" value="classpath*:com/example/mapper/*.xml" />
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 配置MyBatis扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper" />
</bean>
在Java配置类中:
@Configuration
@EnableTransactionManagement
@MapperScan("com.example.mapper")
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
// 可以设置更多的配置属性
return sqlSessionFactoryBean.getObject();
}
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("user");
dataSource.setPassword("pass");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
评论已关闭