framework
Mybatis
MyBatis的$和#的区别
1 | select * from user where name = #{name}; |
解析为:
1 | select * from user where name = ?; |
而${ } 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换
sql注入user; delete user; ,那么就会删除整张表
Mybatis流程
- 读取配置文件
- 加载Mybatis映射
- 加载sqlSessionFactory
- 创建sqlSession
- Executor执行器
- 设置MapStatement
- 输入映射
- 输出映射