一、什么是MyBatis?
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。
MyBatis是一个sql映射框架,提供的数据库的操作能力,增强的JDBC,使用mybatis让开发人员集中精神写sql就可以了,不必关心Connection,Statement,ResultSet的创建,销毁,sql的执行。
MyBatis的作用:增强的jdbc,访问数据库,执行增删改查
轻量级: MyBatis 是一个小巧的框架,没有太多的依赖,使用简单。
灵活性: MyBatis 不会对应用程序或者数据库的现有设计强加任何影响。SQL 写在 XML 里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。
提供映射标签: 支持对象与数据库的 ORM 字段关系映射。
提供动态 SQL: MyBatis 最大的优点就是提供了动态 SQL 的功能,用户可以根据需要编写适合自己的 SQL 语句。
提供 XML 标签: 简化 SQL 语句的编写,尤其对于字段多、关联表多时,更是如此,极大地提高了开发效率。
与 Spring 集成: MyBatis 可以与 Spring 框架无缝集成。
二、三层设计架构
1、MyBatis中的三层设计架构
接口层(API接口层)
这一层是提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层的核心对象是SqlSession,它是上层应用和MyBatis打交道的桥梁,定义了非常多的对数据库的操作方法。当接口层接收到调用请求时,它会调用核心处理层的相应模块来完成具体的数据库操作。
核心处理层(数据处理层)
这一层主要处理与数据库操作相关的所有动作。它负责具体的SQL查找、SQL解析、SQL执行以及执行结果的映射处理等。在处理过程中,核心处理层会将接口中传入的参数解析并映射成JDBC类型,解析XML文件中的SQL语句(包括插入参数和动态SQL的生成),执行SQL语句,并处理结果集,将其映射成Java对象。插件也属于核心层,这是因为它们的工作方式和拦截的对象决定的。
基础支持层(数据访问层)
这一层主要负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理等。这些基础功能被抽取出来作为最基础的组件,为上层的数据处理层提供支撑。基础支持层还包含类型转换模块等,为简化配置文件提供了别名机制等功能。
2、三层对应的包
接口层(API接口层):controller包 (servlet)接收用户请求,显示处理结果,使用框架SpringMVC。
核心处理层(数据处理层):service 包(XXXService类)Spring创建service,Dao,工具类等,使用框架Spring。
基础支持层(数据访问层):dao包(XXXDao类)访问数据库,对数据库进行增删改查,使用框架MyBatis。
3、三层中类的交互
用户使用 --> 界面层–> 业务逻辑层—>数据访问层(持久层)–>数据库(mysql)
4、mybatis框架:
mybatis:是 MyBatis SQL Mapper Framework for Java (sql映射框架)
sql mapper:sql映射
可以把数据库表中的一行数据 映射为 一个java对象,一行数据可以看做是一个java对象,操作这个对象,就相当于操作表中的数据。
Data Access Objects(DAOs):数据访问
对数据库执行增删改查
5、mybatis提供了哪些功能:
提供了创建Connection,Statement,ResultSet的能力,不用开发人员创建这些对象了。
提供了执行sql语句的能力, 不用你执行sql。
提供了循环sql,JDBC中得到的结果集可以直接循环,不用再使用while的方式。
把sql的结果转为java对象,List集合的能力。