简介
- 学过java的人应该都知道框架一词,框架是什么?即软件开发的半成品,主要用来简化开发,提高开发的效率。框架这个东西,剖析到最后,还是基础的servlet,jdbc等等。
- mybatis是Apache软件基金会下的一个开源项目,前身是Ibatis框架。2010年这个项目由apache 软件基金会迁移到google code下,改名为mybatis。2013年11月又迁移到github(https://github.com/mybatis/mybatis-3/releases)。
- mybatis是一个持久层的框架,是对JDBC操作数据库的封装,使开发者只需要关注业务本身,不需要花费精力去处理加载驱动、创建数据库连接对象、创建statement语句对象、参数设置、结果集处理等一系列繁杂的过程代码。
为什么会有Mybatis框架
- 说白了,Mybatis框架就是对JDBC的代码的简化,Mybatis是一个半ORM(Object relational mapping)的框架,可以代替JDBC与数据库进行交互,完成数据的持久化操作,最终的目的还是简化开发。
Mybatis作用
- mybatis通过xml或注解进行配置,将java对象与sql语句中的参数自动映射生成最终执行的sql语句,并将sql语句执行结果自动映射成java对象,返回给业务层(service)应用。
Mybatis框架原理
Mybatis与JDBC对比
- 说到Mybatis的好处,我们首先得拿出东西跟它进行对比,这个地方就拿JDBC来进行对比了。
JDBC的问题:
- ①每次跟数据库都需要获取数据库链接(手写JDBC的六大步骤)
- ②sql语句写在代码里面,表结构修改了,sql语句也要进行修改
- ③?占位符赋值的时候都需要考虑数据的位置和类型
- ④处理结果集 获取从数据库查询出的数据的时候也要考虑数据的位置和类型
Mybatis的好处:
- ①Mybatis在配置文件中提供了一个内置的数据库连接池,能更加方便的获取数据库连接,只需要配置一次即可。
- ②通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
- ③提供XML标签,支持编写动态sql。
- ④Mybatis相对于JDBC有个劣势,就是JDBC可以打断点的方式进行调试,而Mybatis只能用log4j日志进行调试。
- ⑤sql语句写在xml文件里面,便于统一进行管理
Mybatis中#{}占位符和${}字符串拼接符的区别
①占位符#{},相当于jdbc中的问号?,当参数类型传递的是java简单类型的时候,花括号中的内容可以是任意字符串。
②字符串拼接符${},当参数传递的是java简单类型的时候,花括号中的内容只能是:value
③sql语句中使用字符串拼接,可能引起sql注入的问题。
mybatis与hibernate的比较
相同点
- 都是对jdbc的封装,都是持久层的框架,都用于dao层的开发。
不同点
- hibernate对sql语句做了封装,提供了HQL语句操作数据库,数据库无关性支持好,在项目需要支持多种数据库的情况下,代码开发量较少,sql语句优化困难。mybaits是直接使用sql语句操作数据库,不支持数据库无关性,在项目需要支持多种数据库的情况下,代码开发量较多,sql语句优化容易。
- hibernate配置java对象与数据库表的对应关系,多表关联关系配置复杂。mybatis是配置java对象与sql语句的对应关系,多表关联关系配置简单。
- hibernate是一个重量级的框架,学习使用门槛高,适合于需求相对稳定,中小型的项目,比如:办公自动化系统(OA)。mybatis是一个轻量级的框架,学习使用门槛低,适合于需求变化频繁,大型的项目,比如:互联网项目。目前企业项目中,mybatis框架使用更多。