Mybatis入门介绍

Posted Jomini

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis入门介绍相关的知识,希望对你有一定的参考价值。

一、MyBatis的发展

    MyBatis 是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到google code, 并且改名MyBatis。2013年迁移到Github。

    MyBatis是一个持久层框架,它将jdbc的操作数据库进行封装,帮助开发者专注于sql本身,避开了注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc等繁琐的过程代码。

   MyBatis 通过xml或者注解方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

 

二、MyBatis和Hibernate相比的优点

      先说Hibernate的优点:

           1、Hibernate 对JDBC进行了封装,减少SQL硬编码;

           2、避免了代码的映射规则,通过XML或注解避免了管理数据库连接;

           3、使用HQL,支持方言配置,方便数据库移植;

           4、在一个会话中不需要操作多个对象,只需要操作一个session(在spring下,都由spring来管理)。

     然后Hibernate的缺点:    

           1、在存储过程这方面并不是太好;

           2、对多表关联和复杂SQL操作不太友好,针对这方面,还需要自己写SQL;

           3、虽然使用HQL语言查询,但是性能不高,在处理比较大的系统和数据时,需要优化SQL提高效率;

    而MyBatis在一定程度上可以避免了Hibernate的缺点。MyBatis需要手动编写SQL语句和映射关系。

   

           区别:

          与hibernate相比, MyBatis不完全是一个ORM框架,MyBatis需要编写sql语句并且通过XML或者注解的方式配置运行的sql语句。并通过java对象和sql映射成可以执行的sql, 之后再将sql执行的结果映射成java对象。

           MyBatis 比较易学,可编写原生sql,并且提高sql执行性能,适合对关系型数据模型不高的软件开发。但是若要实现多种数据库的软件则需要多个sql映射文件。

           Hibernate 对象,映射强,数据库无关性好,与上面相反。

       

 

三、MyBatis 架构

       1、 MyBatist框架架构图片

         下图是MyBatist框架架构(自于MyBatis官方文档的图,the image is from MyBatis Official document)

                 

                                               (图片版权归mybatis 官方文档所有) 

        2、框架介绍

           1)SqlMapConfig.xml 是Mybatis的全局配置文件,配置了mybatis的运行环境等信息。MapperN.xmls是sql的映射文件,文件中配置了操作数据库  的sql语句,需要通过SqlMapConfig.xml加载;

          2)通过mybatis环境配置信息构造SqlSessionFactory(会话工厂);

          3)再通过SqlSessionFactory创建sqlSession会话(需要通过sqlSession操作数据库 );

          4)MyBatis 底层定义了Exectuor执行器接口操作数据库,Exectuor接口有两个实现,一个是基本执行器,一个是缓存执行器;

          5)MappedStatement是Mybatis底层封装对象,包装了mybatis配置信息以及sql映射信息。mapper.xml文件中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id。

         6)MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo, Executor通过MappedStatement 执行sql前将java对象映射到sql中,输入参数映射就是JDBC编程中对preparedStatement设置参数;

         7) 输出结果映射过程相当于JDBC编程中对结果的解析处理过程。

  

 

   

 

 

  

以上是关于Mybatis入门介绍的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis入门介绍

MyBatis 01 快速入门

Mybatis框架入门

MyBatis基本介绍&快速入门

MyBatis介绍以及入门程序

myBatis简单入门