• MyBatis-1.0


    1. MyBatis框架简介
      •   MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。
      •   MyBatis的前身是iBatis,本是Apache的一个开源项目,2010年这个项目由Apache Software Foundation迁移到了Google Code,并改名为MyBatis。2013年迁移到GitHub。
        •   MyBatis官网:http://mybatis.org
        •        GitHub:https://github.com/mybatis

      2.MyBatis框架的优缺点

      •  MyBatis框架的优点
        • 与JDBC相比,减少了50%以上的代码量
        • MyBatis是最简单的持久化框架,小巧并且简单易学
        • MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用
        • 提供XML标签,支持编写动态SQL语句
        • 提供映射标签,支持对象与数据库的ORM字段关系映射
      •     MyBatis框架的缺点
        • SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求
        • SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库 

       3.MyBatis的基本要素——核心对象

      • 核心接口和类
        • 每个MyBatis的应用程序都以一个SQLSessionFactory对象的实例为核心
        • 首先获取SQLSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建该对象
        • 然后获取SQLSessionFactory对象,该对象实例可以通过SQLSessionFactoryBuilder对象来获得
        • 有了SQLSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法,可以用该实例来直接执行已映射的SQL语句
      • MyBatis核心配置文件(mybatis-config.xml)
      • SQL映射文件(mapper.xml)
      • SQLSessionFactoryBuilder
          • SQLSessionFactoryBuilder的作用  SQLSessionFactoryBuilder负责构建SQLSessionFactory,并且提供了多个build()方法的重载
            • build(Reader reader, String environment, Properties properties)
            • build(InputStream inputStream, String envionment, Properties properties)
            • build(Configuration config)
          • SqlSessionFactoryBuilder的生命周期和作用域
            • SQLSessionFactoryBuilder的最大特点是:用过即丢。一旦创建了SQLSessionFactory对象之后,这个类就不再需要存在了,因此SQLSessionFactoryBuilder的最佳范围就是存在于方法体内,也就是局部变量而已  
      • SQLSessionFactory
          • SQLSessionFactory简单的理解就是创建SqlSession实例的工厂,所有的MyBatis应用都是以SQLSessionFactory实例为中心,SQLSessionFactory的实例可以通过SQLSessionFactoryBuilder对象来获得
          • SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在
      • SqlSession
        • SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection
        • SqlSession对应着一次数据库会话,由于数据库会话不是永久的,因此SqlSession的生命周期也不应该是永久的

          

        4.SQL映射文件

      • SQL映射文件的几个顶级元素配置
        • mapper:映射文件的根元素节点,只有一个属性namespace(命名空间),其作用如下:
          • 用于区分不同的mapper,全局唯一
          • 绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要跟接口同名
          • cache:配置给定命名空间的缓存
          • cache-ref:从其他命名空间引用缓存配置
          • resultMap:用来描述数据库结果集和对象的对应关系
          • sql:可以重用的SQL块,也可以被其他语句引用
          • insert:映射插入语句
          • update:映射更新语句
          • delete:映射删除语句
          • select:映射查询语句
      • select
        • 查询语句是 MyBatis 中最常用的元素之一,光能把数据存到数据库中价值并不大,如果还能重新取出来才有用,多数应用也都是查询比修改要频繁。对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis 的基本原则之一,也是将焦点和努力放到查询和结果映射的原因。简单查询的 select 元素是非常简单的。比如:
        • 这个语句被称作 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值。

          注意参数符号:

        • 这就告诉 MyBatis 创建一个预处理语句参数,通过 JDBC,这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:

        • 当然,这需要很多单独的 JDBC 的代码来提取结果并将它们映射到对象实例中,这就是 MyBatis 节省你时间的地方。我们需要深入了解参数和结果映射,细节部分我们下面来了解。

          select 元素有很多属性允许你配置,来决定每条语句的作用细节。

        • Select Attributes

      • insert, update 和 delete

        

        

        

  • 相关阅读:
    [转]oracle in 多个字段
    [转][MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
    SQL Server “复制”表结构,创建_Log表及触发器
    [转]WordPress主题开发:主题初始化
    struts2请求过程源码分析
    java调优
    websocket之四:WebSocket 的鉴权授权方案
    高可用性及容灾的几个衡量指标
    Struts2返回JSON对象的方法总结
    java websocket @ServerEndpoint注解说明
  • 原文地址:https://www.cnblogs.com/kakax/p/9199754.html
Copyright © 2020-2023  润新知