Mybatis(一)入门介绍
一、MyBatis的发展
MyBatis 是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到google code, 并且改名MyBatis。2013年迁移到Github。
MyBatis是一个持久层框架,它将jdbc的操作数据库进行封装,帮助开发者专注于sql本身,避开了注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc等繁琐的过程代码。
MyBatis 通过xml或者注解方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
二、MyBatis和Hibernate相比的优点
先说Hibernate的优点:
1、Hibernate 对JDBC进行了封装,减少SQL硬编码;
2、避免了代码的映射规则,通过XML或注解避免了管理数据库连接;
3、使用HQL,支持方言配置,方便数据库移植;
4、在一个会话中不需要操作多个对象,只需要操作一个session(在spring下,都由spring来管理)。
然后Hibernate的缺点:
1、在存储过程这方面并不是太好;
2、对多表关联和复杂SQL操作不太友好,针对这方面,还需要自己写SQL;
3、虽然使用HQL语言查询,但是性能不高,在处理比较大的系统和数据时,需要优化SQL提高效率;
而MyBatis在一定程度上可以避免了Hibernate的缺点。MyBatis需要手动编写SQL语句和映射关系。
区别:
与hibernate相比, MyBatis不完全是一个ORM框架,MyBatis需要编写sql语句并且通过XML或者注解的方式配置运行的sql语句。并通过java对象和sql映射成可以执行的sql, 之后再将sql执行的结果映射成java对象。
MyBatis 比较易学,可编写原生sql,并且提高sql执行性能,适合对关系型数据模型不高的软件开发。但是若要实现多种数据库的软件则需要多个sql映射文件。
Hibernate 对象,映射强,数据库无关性好,与上面相反。
三、MyBatis 架构
1、 MyBatist框架架构图片
下图是MyBatist框架架构(自于MyBatis官方文档的图,the image is from MyBatis Official document)
(图片版权归mybatis 官方文档所有)
2、框架介绍
1)SqlMapConfig.xml 是Mybatis的全局配置文件,配置了mybatis的运行环境等信息。MapperN.xmls是sql的映射文件,文件中配置了操作数据库 的sql语句,需要通过SqlMapConfig.xml加载;
2)通过mybatis环境配置信息构造SqlSessionFactory(会话工厂);
3)再通过SqlSessionFactory创建sqlSession会话(需要通过sqlSession操作数据库 );
4)MyBatis 底层定义了Exectuor执行器接口操作数据库,Exectuor接口有两个实现,一个是基本执行器,一个是缓存执行器;
5)MappedStatement是Mybatis底层封装对象,包装了mybatis配置信息以及sql映射信息。mapper.xml文件中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id。
6)MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo, Executor通过MappedStatement 执行sql前将java对象映射到sql中,输入参数映射就是JDBC编程中对preparedStatement设置参数;
7) 输出结果映射过程相当于JDBC编程中对结果的解析处理过程。
Mybatis(一)入门介绍的更多相关文章
- mybatis简单入门介绍
mybatis入门 简介 什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及 ...
- Mybatis的学习总结:mybatis的入门介绍
一.myBatis简述 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- mybatis入门介绍一
首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...
- mybatis入门介绍二
相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...
- MyBatis从入门到精通(第5章):5.4 Example 介绍
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.Eclipse Version: 2019-12 M2 (4.14.0) MyBatis从入门到精通(第5章):MyBatis代码 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis入门学习教程-MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
随机推荐
- HTML学习笔记Day15
一.CSS3渐变 (一).CSS3渐变(gradient)可以让你在两个或多个指定的颜色之间显示平稳的过度:渐变效果比使用图片在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的 1. ...
- lucene的普通搜索(二)
首先得到索引: package com.wp.util; import java.io.File; import java.io.FileReader; import java.nio.file.Pa ...
- qml:: QVariant转为自定义类型
QVariant可以实现C++与qml之间的自定义类型的传递: 以QObject类型为例: 1. QObject转为QVariant QVariant var = QVariant::fromVal ...
- 如何重置mysql中的root密码
方法一: 在my.ini的[mysqld]字段加入:skip-grant-tables重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysqlmysql>use mysq ...
- 上这个资源网站,让你轻松无忧找mac软件资源
之前分享过好几篇关于mac软件相关的文章(想要看其他的mac软件专题文章,可以关注我,点击进入查看发表的文章),有网友表示,优质的软件推荐清单有了,想要下载和获取mac软件,买一个正版软件在APP s ...
- BZOJ2815 拓扑排序 + LCA
https://www.lydsy.com/JudgeOnline/problem.php?id=2815 作为一个DAG图,结点之间又有这么明显的等级之分,很容易想到的是拓扑排序. 但是不管是正向的 ...
- python OrderDict
# encoding: utf-8 import csv import collections d = {'banana':3,'apple':4,'pear':1,'orange':2} print ...
- 信用评分卡 (part 1 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 如何用MTR诊断网络问题
MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告.MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合.本 ...
- JAVA核心技术I---JAVA基础知识(Jar文件导入导出)
一:Jar初识 (一)定义 同c++中的DLL一样 jar文件,一种扩展名为jar的文件,是Java所特有的一种文件格式,用于可执行程序文件的传播. jar文件实际上是一组class文件的压缩包 (二 ...