framework

Mybatis

MyBatis的$和#的区别

1
select * from user where name = #{name};

解析为:

1
select * from user where name = ?;

而${ } 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换

sql注入user; delete user; ,那么就会删除整张表

Mybatis流程

  1. 读取配置文件
  2. 加载Mybatis映射
  3. 加载sqlSessionFactory
  4. 创建sqlSession
  5. Executor执行器
  6. 设置MapStatement
  7. 输入映射
  8. 输出映射