Mybatis入门

dongxurr 2020-01-19

MyBatis是什么

        MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名,所以市面上也会有人称为iBatis.

特点介绍

  1. 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  2. 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
  3. 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  4. 提供映射标签,支持对象与数据库的orm字段关系映射
  5. 提供对象关系映射标签,支持对象关系组建维护
  6. 提供xml标签,支持编写动态sql

MyBatis的优点

        1.基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
        2.与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
        3.很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
        4.能够与Spring很好的集成;
        5.提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

MyBatis的缺点

       1.SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
       2.SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

MyBatis的模块图

Mybatis入门

MyBatis的流程图

Mybatis入门

MyBatis的使用过程
1.配置bean

2.写SqlMapConfig.xml配置文件,配置数据库连接以及对Mapper的管理

3.配置SqlSessionFactory,或使用MyBatis自带的DefaultSqlSessionFactory,这个类实现了SqlSessionFactory,而SqlSessionFactory主要就是一个openSession的作用

4.sql语句的写法两种,Mapper.xml或在Mapper.java中方法上写注解sql

Myabatis的两者sql语句可以混合使用,达到互补的作用,注意id不能相同,不然会报错,id重复问题,没有所谓的优先级之说,两者的区别:

Mapper.xml:

优点:1.跟接口分离、统一管理

        2.复杂的语句可以不影响接口的可读性

缺点:1.过多的XML文件

Annotation注解:

优点:1.接口就能看到sql语句,可读性高,不需要再去找xml文件,方便

         2.复杂的联合查询不好维护,代码的可读性差

SqlSessionFactory\SqlSession\Mapper 推荐作用域

Mybatis入门

相关推荐