mybatis总结

Coohx 2017-12-05

1.什么是iBATIS

一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身独立

2.工作原理

iBATIS会连接到数据库,设置参数,执行语句,获取结果,然后关闭和释放资源。

3.使用范围及原因

有三种原因使得iBATIS很适合于这种小型的应用程序:

首先,iBATIS本身就是小巧而简单的。它不需要服务器和任何其它中间件(middleware)。不需要任何额外机制的支持。iBATIS不依赖于其它第三方组件。一份最小的iBATIS安装只需引用一个dll文件和244KB的磁盘空间。除了SQL映射文件,再不需要其它安装,因此只需几分钟时间,您就可以拥有一个可以使用的数据持久层了

其次,iBATIS不会影响到既有的应用程序或数据库的设计。因此,如果您有一个小型应用程序,已经有了部分实现,甚至已经发布了,都可以使用iBATIS对持久层进行重构。因为iBATIS的简单,它不会使您的程序结构过于复杂,这一点O/RM工具或代码生成器未必能够保证,因为它们总是基于对应用程序或数据库所作的某种假设。

最后,iBATIS也适合于大型软件系统。

4. 为什么要使用iBATIS

简单:最简单的持久层框架之一

性能

分离关注点,很好的实现程序的架构和分层

分工,sql语句和应用层代码的完全隔离

可移植性,支持三种开发平台Java,Ruby,C#

开源和可信度

5哪些情况不适合用iBATIS ?

(1)完全拥有控制权直至永远

(2)如果程序中的SQL完全是动态生成的

原符号        < <= >              >=      &        '            "
替换符号 &lt;   &lt;=    &gt;   &gt;=   &amp;     &apos;      &quot;
 

目前来看,能用#就不要用$

mybatis中的#和$的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".

2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

3. #方式能够很大程度防止sql注入。 

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名. 

6.一般能用#的就别用$.

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

相关推荐

兔子压倒窝边草 / 0评论 2013-07-26
蜀川居 / 0评论 2014-07-16