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注入。

猜你喜欢

转载自www.cnblogs.com/leduo-zuul/p/10738704.html