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的封装返回处理的。

 

转载于:https://www.cnblogs.com/leduo-zuul/p/10738704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值