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 对象。
还没有评论,来说两句吧...