【832、Mybatis 它的 mapper 都是接口,它是怎么放入 Spring 的?】

131 阅读2分钟

MyBatis 是一个开源的持久层框架,它可以与 Spring 框架集成,使得在 Spring 应用中使用 MyBatis 更加方便。在 MyBatis 中,Mapper 接口用于定义数据库操作的方法,而这些方法的实现是由 MyBatis 框架自动生成的。下面是将 MyBatis 的 Mapper 接口放入 Spring 中的一般步骤:

  1. 配置 MyBatis: 首先,你需要配置 MyBatis,包括数据库连接信息、MyBatis 的配置文件、Mapper 接口的映射等。MyBatis 的配置文件(通常是 mybatis-config.xml)中需要包括 Mapper 接口的扫描路径。
  2. 定义 Mapper 接口: 创建 Mapper 接口,该接口中定义了数据库操作的方法。MyBatis 会根据接口的定义生成相应的 SQL 语句并执行。
  3. 配置 Mapper 映射: 在 MyBatis 的配置文件中,使用 <mapper> 元素来引用 Mapper 接口的映射文件(通常是 XML 格式的映射文件)。这些映射文件将实际的 SQL 语句与 Mapper 接口的方法关联起来。
  4. 整合 Spring: 在 Spring 配置文件中,配置 MyBatis 的 SqlSessionFactoryBean,将 MyBatis 配置文件和 Mapper 接口所在的包路径等信息配置进去。这个 Bean 负责创建 SqlSessionFactory,用于创建 SqlSession。
  5. 使用 Mapper: 在 Spring 托管的类中,可以通过注入 Mapper 接口的实例来进行数据库操作。Spring 会自动创建代理对象,将方法调用转发到 MyBatis 执行相应的 SQL 操作。

以下是一个简化的示例,展示了如何将 MyBatis 的 Mapper 接口放入 Spring 中:

// MyBatis Mapper 接口
public interface UserMapper {
    User getUserById(int id);
    // 其他数据库操作方法...
}

// MyBatis 映射文件 userMapper.xml
<mapper namespace="com.lfsun.UserMapper">
    <select id="getUserById" resultType="com.lfsun.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
    <!-- 其他 SQL 映射配置... -->
</mapper>

// Spring 配置文件 applicationContext.xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!-- 数据库连接信息配置... -->
</bean>

<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:mapper/*.xml" />
</bean>

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.lfsun.UserMapper" />
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

// 使用 Mapper 接口
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }
    // 其他业务逻辑...
}

这个示例演示了将 MyBatis 的 Mapper 接口放入 Spring 中的基本过程。通过 Spring 的整合,可以更方便地在 Spring 应用中使用 MyBatis 进行数据库操作。