mybatis框架原理,组件,案例,优化,优缺点总结

MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects)映射成数据库中的记录。

原理

MyBatis 的核心原理是基于 SQL 映射的,它允许用户将 SQL 语句配置在 XML 文件中,或者使用注解配置在接口方法上。在运行时,MyBatis 会根据这些配置动态地生成 SQL 语句,执行 SQL,并将结果映射到 Java 对象上。

组件

  1. SqlSessionFactory:创建 SqlSession 的工厂类。
  2. SqlSession:用于执行 SQL 的接口,表示数据库会话。
  3. Executor:MyBatis 的核心接口,它里面有各种方法来执行你在映射文件里定义的 SQL。
  4. MappedStatement:Mapper 映射的 SQL 语句,包含 SQL 语句、输入参数映射配置、输出结果映射配置等信息。
  5. SqlSource:用于根据参数创建 SQL 语句。
  6. ResultMap:定义了查询结果如何封装到返回的实体对象。
  7. SqlSessionManager:用于管理 SqlSession 的生命周期和事务。

案例

下面是一个简单的 MyBatis 使用案例:

  1. 添加依赖
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>你的MyBatis版本</version>
</dependency>
  1. 配置 mybatis-config.xml
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="数据库驱动"/>
                <property name="url" value="数据库URL"/>
                <property name="username" value="用户名"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
  1. 创建 Mapper XML 文件
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>
  1. 编写 Java 实体类和 Mapper 接口
public class Blog {
    private int id;
    private String title;
    // getter 和 setter
}
public interface BlogMapper {
    Blog selectBlog(int id);
}
  1. 执行查询
SqlSessionFactory sqlSessionFactory = ... // 从 mybatis-config.xml 创建 SqlSessionFactory
try (SqlSession session = sqlSessionFactory.openSession()) {
    BlogMapper mapper = session.getMapper(BlogMapper.class);
    Blog blog = mapper.selectBlog(101);
}

优化

  1. 使用缓存:MyBatis 提供了一级和二级缓存,可以减少数据库查询次数。
  2. 动态 SQL:使用 MyBatis 提供的动态 SQL 功能,可以避免 SQL 注入,并编写更灵活的查询。
  3. 批量操作:使用批量操作可以减少数据库的 I/O 次数,提高性能。
  4. 使用拦截器:MyBatis 允许自定义拦截器,可以用于实现审计日志、性能监控等功能。

优缺点

优点

  1. 简化 SQL 编写和参数设置,提高开发效率。
  2. 相比于 Hibernate,MyBatis 的学习曲线较平缓。
  3. 较好的性能,因为 SQL 语句是自己写的,可以优化。
  4. 较为灵活,易于集成其他框架。
    缺点
  5. SQL 维护较为困难,尤其是复杂的 SQL。
  6. 代码量和配置较多,尤其是大型项目。
  7. 相比于 Hibernate,MyBatis 的自动化程度较低,一些功能需要手动实现。
  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值