- A+
1. Mybatis框架架构
Mybatis框架架构讲解(架构图如下图所示):
(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2) SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
(3) SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。
(4) 结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。
Mybatis架构图
2. JDBC预编译模式
Mybatis框架作为一款半自动化的持久层框架,其SQL语句都需要我们自己手动编写,此时就需要按照安全编码规范进行开发,以防止SQL注入漏洞的产生。
针对上一节中所举的例子,应用Mybatis框架SQL语句安全写法(即JDBC预编译模式)可以写为:
select * from news where id=#{id},这种写法可以很好地避免SQL注入漏洞的产生。
3. 动态拼接SQL语句
如果在开发过程中没有采用JDBC的预编译模式,如我们将上述SQL语句写为:select * from news where id=${id},这种写法就产生了SQL语句的动态拼接。因为”${xxx}”这样格式的参数会直接参与SQL语句的编译,从而不能避免SQL注入攻击。
摘录于:http://www.open-open.com/lib/view/open1474963603800.html
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫