Mybatis框架介绍-1

  • A+
所属分类:DataBase

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框架介绍-1

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

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: