java面试题总结系列(mybatis)

mybatis的工作原理

1.通过输入流读取并加载myabtis全局配置文件和mapper映射文件,生成configuration对象和一个个MapperStatement对象。

2.SqlsessionFactoryBuilder通过configuration生成sqsessionFactory,用于开启sqlsession会话。

3.sqlsession完成与数据库的交互。

  a.用户程序调用myabtis的api(即mapper层的方法)

  b.sqlsession通过调用api的statement id找到对应的mapperdstatement对象。

  c.executor将mapperdstatement进行解析,使用ParameterHandler填充参数;使用StatementHandler绑定参数和sql;

  d.获取数据库连接,执行sql,使用ResultSetHandler处理返回结果集。

  f.关闭sqlsession会话。

 

${}和#{}的区别

${}是properties文件中的变量占位符,属于静态文本替换。

#{}是sql的参数占位符,mybatis会将#{}替换成?号,在sql执行前使用preparedStatement,调用参数的设置方法,防止sql注入。

 

sqlsession的四大对象
Executor:真正执行Java和数据库交互的东西,在Mybatis中存在三种执行器:

  • SimpleExecutor:简易执行器,默认的执行器。
  • ReuseExecutor:一种执行器重用预处理语句
  • BatchExecutor:这个执行器会批量执行所有更新语句。  

  用来调度StatementHandler、ParameterHandler、ResultHandler来执行对应的SQL。

StatementHandler:使用数据库的Statement执行操作,是四大对象的核心。
ParameterHandler:参数处理对象,用于对SQL参数的处理。
ResultSetHandler:结果处理对象,进行最后数据集ResultSet的封装返回处理的。

 
posted @ 2019-04-19 20:50  Zuul  阅读(198)  评论(0编辑  收藏  举报