为什么使用MyBatis?
1.JDBC在创建Connection的时候,存在硬编码问题(也就是直接把连接信息写死,不方便后期维护)
2.preparedStatement对象在执行sql语句的时候存在硬编码问题
3.每次在进行一次数据库连接后都会关闭数据库连接,频繁的开启/关闭数据连接影响性能
mybatis相对JDBC优势
1.mybatis是把连接数据库的信息都是写在配置文件中,因此不存在硬编码问题,方便后期维护
2.mybatis执行的sql语句都是通过配置文件进行配置,不需要写在Java代码中
3.mybatis的连接池管理、缓存管理等让连接数据库和查询数据效率更高
数据持久化概念
数据持久化:将内存的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称
文件的存储、数据的读取等都是数据持久化操作
数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等
MyBatis框架即ORM(实现)
MyBatis是一个开源的数据持久层框架。内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO(Plain Old Java Objects,普通Java对象)映射成数据库中的记录
MyBatis作为持久层框架,主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL
MyBatis是Apache的一个开源项目:http://mybatis.org
ORM(对象/关系数据映射)
ORM(Object/Relational Mapping)即对象/关系数据映射,可以理解为一种数据持久化技术。
在对象与关系型数据库之间建立起对应的关系,并且提供一种机制,通过JavaBean对象去操作数据库表中的数据。
ORM在对象模型和关系数据库的表之间建立了一座桥梁,不需要在使用SQL语句操作数据库中的表,可以直接使用API直接操作JavaBean对象就可以实现数据库的存储、查询、更改和删除等操作。
MyBatis通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现
MyBatis是ORM的解决方案
基于ORM,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁,通过MyBatis建立SQL关系映射,以便捷地实现数据库存储、查询、更改和删除等操作
MyBatis基本要素(三大)
三个基本要素:
①核心接口和类(对象)
②核心配置文件(mybatis-cofig.xml)
③SQL映射文件(mapper.xml)
(1)每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心
(2)首先获取SqlSesssionFactoryBuilder对象,可以根据XML配置文件或Connection类的实例构建该对象
(3)然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获得
(4)有了SqlSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法。可以通过该实例来直接执行以映射的SQL语句
部署jar文件(基本)
mybaris-版本.jar
mysql-connector-java-版本-bin.jar(MySQL数据库驱动jar文件)
log4j-版本.jar(负责日志输出的jar文件)
MyBatis依赖包中文件说明(lib下)
jar包 | 描述 |
---|---|
asm-版本.jar | 操作Java字节码的类库 |
cglib-版本.jar | 用来动态集成Java类或实现接口 |
commons-logging-版本.jar | 用于通用日志处理 |
javassist-版本-GA.jar | 分析、编辑和创建Java字节码的类库 |
log4j-版本.jar | 日志系统 |
slf4j-api-版本.jar | 日志系统的封装,对外提供统一的API接口 |
slf4j-log4j版本.jar | slf4j对log4j的相应驱动,完成slf4j绑定log4j |
MyBatis框架的优缺点
优点
(1)与JDBC相比,减少50%以上的代码量
(2)MyBatis是最简单的持久化框架,小巧并且简单易学
(3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL语句写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并且可重用
(4)提供XML标签,支持编写动态SQL语句
(5)提供映射标签,支持对象与数据库的ORM字段关系映射
缺点
(1)SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库
适用场合
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目