互联网轻量级框架SSM-查缺补漏第七天(MyBatis的剖


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

  简言:

 

第七章MyBatis的剖析和运转道理

  SqlSessionFactory是MyBatis的中心类之一,其最重要的功用就是供应建立MyBatis的中心托言SqlSession,以是要先建立SqlSessionFactory,为此要供应设置装备摆设文件和相干的参数。MyBatis是一个庞杂的体系,它接纳了Builder形式去建立SqlSessionFactory,在实际上能够经由历程SqlSessionFactoryBuilder去建立,分为两步:

  

SqlSessionFactory = new SqlSessionFactoryBuider().build(inputStream);

  • 第一步经由历程org.apache.ibatis.builder.xml.XMLConfigBuilder剖析设置装备摆设XML文件,读取一切设置装备摆设参数,并将读取的内容装入org.apache.ibatis.session.Configuration类工具中。而Configuration接纳的事单例形式,险些一切的MyBatis设置装备摆设内容都邑存放在这个单例工具中,以便后续将这些内容读出。
  • 第二步运用Configuration工具建立SqlSessionFactory,MyBatis中SqlSessionFactory是一个接口,而不是一个完成类,为此MyBatis供应一个默许的完成类org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。在大局部情况下都没有须要自身去建立新的SqlSessionFactory完成类。

  映射器的内部构成:

  当XMLConfigBuilder剖析XML时,会将每个SQL和其设置装备摆设的内容生存起来。一般而言,在MyBatis中一条SQL和它相干的设置装备摆设信息是由3个局部构成阀门分别是MappedStatementSqlSourceBoundSql

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

 

  • MappedStatement:的作用是生存一个映射器节点(select|insert|delete|update)的内容。他是一个类,包孕很多我们设置装备摆设的SQL、SQL的id、缓存信息、resultMap、parameterType、resultType、resultMap、languageDriver等重要设置装备摆设内容。她另有一个重要的属性sqlSource,MyBatis经由历程读取它来猎取某条SQL设置装备摆设的一切信息。
  • sqlSource:供应BoundSql陪工具的处所,他是MappedStatement的一个属性。它是一个接口。自定义了一个接口要领getBoundSql(parameterObject),运用它能够获得一个BoundSql工具。
  • BoundSql:是一个效果工具,关于终究的参数和SQL都反映在BoundSql类工具上。BoundSql有三个重要的属性:parameterMappings、parameterObject和sql
    • parameterObject:为参数自身,能够通报简朴工具、POJO或许Map
    • parameterMappings是一个List,它的每个元素都是ParameterMapping工具。工具会形貌参数,参数包孕属性称号、表达式、javaType、jdbcType、typrHandler等重要信息
    • sql属性就是书写在映射器内里的一条被SqlSource剖析后的SQL

  SqlSession运转历程

  注:这里的代码作为例子。图为代码运转历程的流程图。

  

  SqlSession处置惩罚SQL的历程:经由历程StatementHandlerParameterHandlerResultSetHandler来完成数据库操纵和效果的返回。

  • Executor:代表实行器,由他来调理其他工具来实行对应的SQL。SqlSession实际上是一个门面,真正干活的是实行器,它是一个真正实行Java和数据库交互的工具。
  • StatementHandler:作用是运用数据库的Statement(比方PreparedStatement)实行操纵,它很重要。
  • ParameterHandler:是用来处置惩罚SQL参数的。
  • ResultSetHandler:是举行数据集(ResultSet)的封装返回处置惩罚的。

  总结:SqlSession内部运转图以下:

  • prepared预编译SQL
  • parameterize设置参数
  • query/update实行SQL
-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。