博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis(1)---概述
阅读量:4088 次
发布时间:2019-05-25

本文共 2324 字,大约阅读时间需要 7 分钟。

1、mybatis历史

1)MyBatis 是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code,随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis ,代码于 2013 年 11 月迁移到 Github

2)iBatis 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。 iBatis 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)

2、什么是mybatis?

1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

3) MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

3、为什么要使用mybatis?

1)、使用JDBC

SQL语句卸载java代码块中,耦合度高,存在硬编码。

使用JDBC维护难且实际开发需求中sql是有变化的,频繁修改的情况常见

2)、使用Hibernate和JPA

hibernate是全自动映射框架,大量字段的pojo进行部分映射时比较困难,导致数据库性能下降。

优点是:写代码少,开发速度快。

3)、mybatis

对于开发人员而言,核心sql还是需要自己优化

sql语句和java编码分离,功能边界清晰,一个专注数据,一个专注业务,各司其职,互不干扰。

它的缺点就是整个底层数据库查询都需要自己编写,工作量比较大,

4、如何下载mybatis?

1) 下载网址 https://github.com/mybatis/mybatis-3/

5、mybatis工作流程

第1步、通过SqlSessionFactoryBuilder创建SqlSessionFactory对象

在SqlSessionFactoryBuilder的build()方法中可以看到Mybatis内部定义了一个类XMLConfigBuilder,它是用来解析配置文件mybatis-config.xml的,针对配置文件中的每一个节点进行解析,并将数据存放到configuration这个对象中,紧接着使用带有Configuration的构造方法返回一个DefaultSqlSessionFactory

第2步、通过SqlSessionFactory创建SqlSession对象

第3步、通过SqlSession拿到Mapper代理对象

第4步、通过MapperProxy调用Mapper中增删改查的方法

6、mybatis的核心类

Mybatis底层封装了JDBC,使用了动态代理模式。

 1)、SqlSessionFactoryBuilder (构造器):使用Builder模式根据mybatis-config.xml配置或者代码来生成SqISessionFactory。

 2)、SqlSessionFactory (工厂接口):使用工厂模式生成SqlSession。

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例。SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,建议使用单例模式或者静态单例模式。一个SqlSessionFactory对应配置文件中的一个环境(environment),如果你要使用多个数据库就配置多个环境分别对应一个SqlSessionFactory。

 

 3)、SqlSession (会话): 一个既可以发送 SQL 执行返回结果,也可以获取Mapper的接口。

SqlSession是一个接口,它有2个实现类,分别是DefaultSqlSession(默认使用)以及SqlSessionManager。SqlSession通过内部存放的执行器(Executor)来对数据进行CRUD。此外SqlSession不是线程安全的,因为每一次操作完数据库后都要调用close对其进行关闭,官方建议通过try-finally来保证总是关闭SqlSession

 

 4)、SQL Mapper (映射器): 它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则,它负责发送SQL去执行,并返回结果。

 5)、Executor(执行器): Executor接口有两个实现类,其中BaseExecutor有三个继承类分别是

BatchExecutor(重用语句并执行批量更新)

ReuseExecutor(重用预处理语句prepared statement,跟Simple的唯一区别就是内部缓存statement)SimpleExecutor(默认,每次都会创建新的statement)。

以上三个就是主要的Executor,通过下图可以看到Mybatis在Executor的设计上面使用了装饰器模式,我们可以用CachingExecutor来装饰前面的三个执行器目的就是用来实现缓存

 

 

 

转载地址:http://zmuii.baihongyu.com/

你可能感兴趣的文章
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
Winform多线程
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
《PostgreSQL技术内幕:查询优化深度探索》养成记
查看>>
剑指_复杂链表的复制
查看>>
FTP 常见问题
查看>>
Python学习笔记之数据类型
查看>>
shell 快捷键
查看>>
VIM滚屏操作
查看>>
将file文件内容转成字符串
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>