首页 小编推荐 正文

一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆

MyBatis功用架构规划



功用架构解说:

咱们把Mybatis的功用架构分为三层:

  • API接口层:供给给外部运用的接口API,开发人员经过这些本地API来操作数据库大跃进。接口层一接收到调51talk用恳求就会调用数据处理层来完结详细的数据处理。
  • 数据处理层:担任详细的SQL查找、SQL解析、SQL履行和履行成果映射处理等。它首要的意图是依据调用的恳求完结一次数据库操作。
  • 根底支撑层:担任最根底的功用支撑,包含衔接办理、事务办理、装备加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最根底的组件。为上层的数据处理层供给最根底的支撑。

结构架构



结构架构解说:

这张图从上往下看。MyBatis的初始化,会从mybatis-config.x一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆ml装备文件,解析构形成Configuration这个类,便是图中的红框。

  1. 加载装备:装备来源于两个当地,一处是装备文件,一处是Java代码的注解,将SQL的装备信息加载成为一个个MappedStatement目标(包含了传入参数映射装备、履行的SQL句子、成果映射装备),存储在内存中。
  2. SQL解析:当我的ip地址API接口层接收到调用恳求时,会接收到传入SnagitiveQL的ID和传入目标一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆(可所以Map、Jnpc是什么意思avaBean或许根本数据类型),Mybatis会依据SQL的ID找到对应的MappedStatement,然后依据传入参数目标对MappedStateme玉竹nt进行新化天气预报解析,解析后能够得到终究要履行的SQL句子和参数。
  3. SQL履行:将终究得到的SQL和参数拿到数据库进行履行,得到操作数据库的成果。
  4. 成果映射一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆:将操作数据库的成果依照映射的装备进行转化,能够转化成HashMap、JavaBean或许根本数据类型,并将终究成果回来。

MyBatis中心类

1、SqlSessionFactoryBuilder

每一个MyB百度卫兵atis的应用程序的进口是SqlSessionFactoryBuilder。

它的效果是经过XML装备文件创立Configuration目标(当然也能够在程序中自行创立),然后经过build办法创立SqlSessionFactory目标。没有必要每次拜访Mybatis就创立一一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆次SqlSessionFactoryBuilder,一般的做法是创立一个大局的目标就能够了。

示例程序如下:

org.apache.ibatis.session.Configuration 是mybatis初始化惹爱成瘾的中心。

mybatis-config.xml中的装备,最后会解析xml成Configuration这个类。

SqlSessionFactoryBuilder依据传入的数据流(XML)生成Configuration目标,然后依据Configuration目标创立默许杨晓晾莲花落视频全集的SqlSessionFactory实例。

2、SqlSessionFactory目标由SqlSession天才jFac一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆toryBuilder创立:

它的首要功用是创立SqlSession目标,和SqlS全能网卡驱动essionFactoryBu小米笔记本ilder目标相同,没有必要每次拜访Mybatis就创立一次SqlSessionFactory,一般的做法是创立一个大局的目标就能够了。SqlSes史连永sionFactory目标一个必要的特点是Configuration目标,它是保存Mybatis大局装备的一个装备目标,一般由SqlSessionFactoryBuilder从XML装备文件创立。

这儿给出一个简略的示例:

3、SqlSession

SqlSession目标的首要功用是完结一次数据库的拜访和成果的映射,它类似于数据库的session概念,因为不是线程安全的,所以SqlSession目标的效果域需约束办法内。

SqlSession的默许完结类是DefaultSqlSession,它有两个有必要装备的特点:Configuration和Executor。Configuration前文现已描绘这儿不再多说。SqlSession对数据库的操作都是经过Executor来完结的。

SqlSession :默许创立DefaultSqlSession 而且敞开一级缓存,创立履行器 、赋值。

SqlSession有一个重要的办法getMapper,望文生义,这个办法是用来获取Mapper目标的。什么是Mapper目标?

依据Mybatis的官方手册,应用程序除了要初始并发动Mybatis之外,还需求界说一些接口,接口里界说拜访数据库的办法,寄存接口的包途径下需求放置同名的XML装备文件。

SqlSession的getMapper办法是联络应用程序和Mybatis枢纽,应用程序拜访getMapper时,Mybatis会依据传入的接口类型和对应的XML装备文件生成一个署理目标,这个署理目标就叫Mapper目标。应用程序取得Mapper目标后,就应该经过这个Mapper目标来拜访Mybatis的SqlSession目标,这样就达到里刺进到Mybatis流程的意图。

4、Executor

Executor目标在创立Configuration目标的时分创立,而且缓存在Configuration目标里。Executor目标的首要功用是调用StatementHandler拜访数据库,并将查询成果存入缓存中(假如装备了缓存的话)。

5、StatementHandler

Stateme同志故事ntHandler是真实拜访数据老男孩吉他谱库的当地,并调用ResultSetHandler处理查询成果。

6、ResultSetHandler

处理查询成果。

MyBatis成员层次&责任



  1. SqlSession 作为MyBatis作业的首要顶层一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆API,表明和数据库交互的会话,完结必要数据库增修改查功用
  2. Executor MyBatis履行器,是MyBatis 调度的中心,担任SQL句子的生成和查询缓存的保护
  3. StatementHandler 封装了JDBC Statement操作,担任对JDBCstatement的操作,如设置参数、将Statement成果集转化成List调集。
  4. ParameterHandler 担任对用户传递的参数转化成JDBC hkStatement 所需求的参数
  5. R高岗esultSetHandler *担任将JDBC回来的ResultSet成果集目标转化成List类型的调集;
  6. TypeHandler 担任java数一文讲清Mybatis架构-万博manbetx_manbetx官方网站登录_万博体育官网登陆据类型和jdbc数据类型之间的映射和转化
  7. MappedStatement MappedStatement保护了一条
  8. 节点的封
  9. SqlSource 担任依据用户传递的parameterObject,动态地生成SQL句子,将信息封装到BoundSql目标中,并回来
  10. BoundSql 表明动态生成的SQL句子以及相应的参数信息
  11. Configuration MyBatis一切的装备信息都维持在Concrazyfiguration目标之中

回复“资源”,收取 练手源码,视频教程,微服务、并发,数据可调优等,查找【Java知音】

相关推荐

  • 暂无相关文章