死磕mybatis源码:1.mybatis概述

死磕源码:1.mybatis概述

  • 1 概述
  • 2 准备工作
    • 2.1 环境准备
    • 2.2 mybatis的简单应用
      • 2.2.1 配置文件
      • 2.2.2 定义实体类
      • 2.2.3 编写Mapper文件
      • 2.2.4 编写XML文件
      • 2.2.5 使用mybatis
  • mybatis的核心组件
  • 3 总结

1 概述

mybatis可以说是一个十分成熟的框架了,基本上已经是互联网企业的标配技术之一。mybatis是基于ibatis,其沿用了ibatis的优点,优化了SQL的配置,可以采用ONGI的表达式来动态的配置SQL,可以说mybatis是一个非常优秀的数据库持久层框架。作为一个程序员,十分有必要拜读一下这个框架的源码,了解其核心原理。

2 准备工作

2.1 环境准备

  • java8开发环境
  • maven下载和安装
  • mybatis源码下载,直接git clone https://github.com/mybatis/spring.git即可。
  • 开发工具idea

2.2 mybatis的简单应用

2.2.1 配置文件




    
        
            
            
                
                
                
                
            
        
    
    
        
    

2.2.2 定义实体类

public class User {
    private String id;
    private String name;
    private int age;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2.2.3 编写Mapper文件

public interface UserMapper {
    User findById(String id);
}

2.2.4 编写XML文件




    

2.2.5 使用mybatis

InputStream inputStream = Resources.getResourceAsStream("config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findById("111");

mybatis的核心组件

上边简单的介绍了mybatis最简单的用法,可以说它已经完完全全的将以往的SQL拼接等复杂的操作给屏蔽掉了,可以实现动态的拼接SQL,也不用开发者来管理连接和事务等,十分的方便简介。那么mybatis的核心组成是怎样的呢?
死磕mybatis源码:1.mybatis概述_第1张图片
从上图我们可以看到mybatis的核心组件有以下几个
Configuration:用于描述mybatis的配置信息,即我们上边编写的那么mybatis的配置文件,会转换成这样对应的一个配置类。当Mybatis启动的时候,Mapper,TypeHandler等相关信息都会注册到Configuration中,可以通过它来获取相关的信息。
MappedStatement:这个类就是对应的mapper的xml文件中的节点,如select|delete|update等等节点都会转换成对应的MappedStatement对象。
SqlSession:字面意思就是会话,其实它是mybatis提供给用户操作的API接口,用户可以通过SqlSession来进行增删改查等交互操作。
Executor:这个是Mybatis的SQL执行器,SqlSession包装了这个执行器,实际上最终SQL的执行都是通过Executor来进行执行的。
StatementHandler/ParameterHandler:这个是对JDBC的Statement进行了加强。
ResultSetHandler:它能将查询结果转换成Java对象。
TypeHandler:主要是Mybatis的类型处理器,用于做类型映射的。

3 总结

本章结束,大家应当对mybatis有一个整体的理解,要针对以下几个方面有一个认证

  • mybatis的使用
  • mybatis的整体结构即关键的类的作用

你可能感兴趣的:(mybatis,Java)