死磕mybatis源码:1.mybatis概述

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 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="data-mapper.xml"/>
    </mappers>
</configuration>

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文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.simple.demo.UserMapper">
    <select id="findById" resultType="com.simple.demo.User">
        SELECT * FROM T_USER WHERE ID = #{id}
    </select>
</mapper>

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的核心组件有以下几个
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的整体结构即关键的类的作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值