Mybatis面试看这篇就够了

男娘i 2022-02-01 06:47 449阅读 0赞

mybatis和Hiberbate的区别

Mybatis是轻量级封装优化方便。,Hibernate是重量级封装一个全自动一个半自动,

mybatis是通过sql语句拿到对象,Hiberbate是通过对象拿到sql语句。

#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换。

Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的
set方法来赋值;

Mybatis 在处理${}时,就是把${}替换成变量的值。

使用#{}可以有效的防止 SQL 注入,提高系统安全性。

通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个Dao 接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

Dao 接口,就是人们常说的 Mapper 接口,接口的全限名,就是映射文件中的
namespace的值,接口的方法名,就是映射文件中 MappedStatement 的 id
值,接口方法内的参数,就是传递给 sql 的参数。Mapper
接口是没有实现类的,当调用接口方法时,接口全限名+

方法名拼接字符串作为 key 值,可唯一定位一个 MappedStatement,举例:

com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到 namespace 为

com.mybatis3.mappers.StudentDao 下面 id = findStudentById 的

MappedStatement。在 Mybatis
中,每一个标签均会被解析为
MappedStatement 对象,标签内的 sql 会被解析为 BoundSql 对象。

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读