Spring和Mybatis是目前 JavaWeb 开发中最流行的两个框架之一,他们的整合可以使开发过程更加方便和高效。下面我们来详细讲解 Spring 和 Mybatis 的整合方法。
一、整合前的准备工作
- 引入相关依赖
Spring 和 Mybatis 的整合需要引入相关的依赖,具体如下:
<!-- 引入 Spring 框架的相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
- 配置 Spring 数据源
Spring 和 Mybatis 整合需要配置数据源,一般使用的是 MySQL 数据库。可以在 Spring 的配置文件中配置数据源,具体如下:
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
二、整合方法
1. 使用 SqlSessionFactoryBean 整合
在 Spring 和 Mybatis 的整合中,使用 SqlSessionFactoryBean 可以更加方便地配置 Mybatis,具体步骤如下:
- 添加配置文件
在项目中添加 Mybatis 的配置文件,比如 mybatis-config.xml 和 mapper.xml 等
- 配置 SqlSessionFactoryBean
在 Spring 的配置文件中配置 SqlSessionFactoryBean,具体如下:
<!-- 配置 SqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
这里可以使用 Spring 的自动扫描功能来扫描包下的所有 mapper.xml 文件:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"></property>
</bean>
这样,就可以在代码中通过注入 SqlSessionFactory 来访问数据库。例如:
@Autowired
private SqlSessionFactory sqlSessionFactory;
2. 使用 MapperScannerConfigurer 整合
使用 MapperScannerConfigurer 可以自动扫描指定的 mapper 接口并将其注册为 bean,具体步骤如下:
- 添加配置文件
Mybatis 的配置文件和 mapper 接口放在指定的包下
- 配置 MapperScannerConfigurer
在 Spring 的配置文件中配置 MapperScannerConfigurer,具体如下:
<!-- 配置 MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"></property>
</bean>
这样就可以在代码中直接使用 @Autowired 注解来注入 mapper 接口,例如:
@Autowired
private UserMapper userMapper;
这样,就实现了 Spring 和 Mybatis 的整合。
三、示例
1. 使用 SqlSessionFactoryBean 整合的示例
下面是一个基于 SqlSessionFactoryBean 的示例代码:
@Repository
public class UserMapperImpl implements UserMapper {
@Autowired
private SqlSessionFactory sqlSessionFactory;
public User getUserById(int id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.getUserById(id);
}
}
}
2. 使用 MapperScannerConfigurer 整合的示例
下面是一个基于 MapperScannerConfigurer 的示例代码:
@Repository
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(int id) {
return userMapper.getUserById(id);
}
}
在 Dao 层中直接使用 @Repository 注解来标注接口,并在 Service 层中使用 @Autowired 注解来注入接口即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring与Mybatis的整合方法有哪些 - Python技术站