zoukankan      html  css  js  c++  java
  • 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编程中对结果的解析处理过程。

      

       

      

  • 相关阅读:
    vue-quill-editor富文本编辑器使用
    vue中this.$router.push()路由传值和获取的两种常见方法
    在 Vue.js项目中如何定义全局变量&全局函数
    vue中利用provide和inject实现页面刷新(无白屏)重载组件
    linux 发送get post命令
    java 反射结合hibernate-validator 注解校验对象数据合法性
    开发过程工具集
    java 创建文件夹及文件写入数据到excel
    java文件不存在就创建_Java中创建并写文件的5种方式【转载】
    java 字符串左补齐
  • 原文地址:https://www.cnblogs.com/Jomini/p/8535302.html
Copyright © 2011-2022 走看看