MyBatis-1.0

2018-06-21 06:54:30来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 

 

  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

    

    

    

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:dubbo源码分析 之 服务本地暴露

下一篇:java动态代理