小言_互联网的博客

Mybaties框架结构(留作复习用)

260人阅读  评论(0)

1–框架架构

框架架构讲解:

(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载
成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),
存储在内存中。
(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象
(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID
找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,
解析后可以得到最终要执行的SQL语句和参数。
(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。
(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、
JavaBean或者基本数据类型,并将最终结果返回。

2–基本信息

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了
几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 
或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,
普通的 Java对象)映射成数据库中的记录.

3–背景介绍

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

4—特点

简单易学:
本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件
易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
灵活:
mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,
便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
解除sql与程序代码的耦合:
通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql.

5–总体流程

(1)加载配置并初始化

触发条件:加载配置文件
处理过程:将SQL的配置信息加载成为一个个MappedStatement对象
(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

(2)接收调用请求

触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。

(3)处理操作请求

触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。

附:部分配置文件(根据自己的项目稍作修改)

<?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>

    <!--从外部加载属性配置文件-->
    <properties resource="jdbc.properties"></properties>

    <!-- 全局配置参数 -->
    <settings>
        <!-- 延迟加载总开关 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 设置按需加载 -->
        <setting name="aggressiveLazyLoading" value="true" />

        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!--类型转换器-->
    <typeAliases>
        <!--单独制定别名-->
       <!-- <typeAlias type="com.baidu.pojo.User" alias="uuu"></typeAlias>-->
        <package name="com.baidu.pojo"></package>

    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <package name="com.baidu.dao" ></package>
    </mappers>
</configuration>

转载:https://blog.csdn.net/qq_39205129/article/details/101308886
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场