MyBatis

定义

MyBatis是一个Java持久化框架,他通过XML描述符或注解把对象与存储过程或SQL语句关联起来。

MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。

MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现,以及用于与OSCacheEhcacheHazelcastMemcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。

原理

MyBatis的架构设计以及实例分析

应用

  • Supports stored procedures
  • Supports inline SQL

  • Supports dynamic SQL

  • Supports O/RM

与Spring Framework集成

Spring Framework允许MyBatis参与Spring事务,创建了MyBatis映射器和会话,并把他们注入到其他bean中。

如下是一个基本的XML配置示例:创建了映射器,并注入到“BlogService”bean中。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    <property name="mapperInterface" value="org.mybatis.example.BlogMapper" />
</bean>

<bean id="blogService" class="org.mybatis.example.BlogServiceImpl">
    <property name="blogMapper" ref="blogMapper" />
</bean>

现在调用MyBatis只需要调用一个bean:

public class BlogServiceImpl implements BlogService {

    private BlogMapper blogMapper;

    public void setBlogMapper(BlogMapper blogMapper) {
        this.blogMapper = blogMapper;
    }

    public void doSomethingWithBlog(int blogId) {
        Blog blog = blogMapper.selectBlog(blogId);
        ...
    }
}

results matching ""

    No results matching ""