• 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编程中对结果的解析处理过程。

      

       

      

  • 相关阅读:
    Touch panel DTS 分析(MSM8994平台,Atmel 芯片)
    Python+Django+SAE系列教程10-----Django模板
    springmvc json
    xmpp和OpenFire示例,即时聊天室,支持离线消息
    Hadoop MapReduce编程入门案例
    [PWA] 5. Hijacking one type of request
    [Javascript] String method: endsWith() && startsWith()
    [PWA] 4. Hijacking Request
    [PWA] 3. Devtool
    [PWA] 2. Service worker life cycle
  • 原文地址:https://www.cnblogs.com/Jomini/p/8535302.html
Copyright © 2020-2023  润新知