mybatis总体分析
Mybatis是一个半orp框架,说是半,也就是不完全是,还有很多地方是需要开发人员完成的。发现很多互联网公司使用Mybatis,而不是hibernate。应该是因为Mybatis不但有orp的优势,同时还可以更加灵活高效的控制DB的读写。
Mybatis框架分两块:一、启动,框架启动是读取配置文件初始化;二、调用,用户调用mapper接口,框架实现接口读写数据库,返回结果集。
启动
Mybatis的配置文件有两部分,config.xml Mybatis的主配置文件,也叫全局配置文件;mapper.xml Mybatis的object table mapper配置文件,对每个业务实体的对象与表的mapper关系。
Mybatis启动时,先读取配置文件config.xml 主配置文件,加载Mybatis的全局配置,比如缓存、数据源等,后面在加载每个mapper.xml文件的路径。然后读取每个mapper.xml 配置文件,读取mapper关系,形成statement对象列。
调用
用户命名mapper接口,Mybatis根据mapper接口,利用动态代理生成mapper接口的实现。为接口生成对象,让开发用户直接使用。
Mybatis生成mapper接口的实现时,内部调用jdbc的实现,然后获取resultset对象,封装成对象,返回给用户。
mybatis总体分析的更多相关文章
- mybatis源代码分析:mybatis延迟加载机制改进
在上一篇博客<mybatis源代码分析:深入了解mybatis延迟加载机制>讲诉了mybatis延迟加载的具体机制及实现原理. 可以看出,如果查询结果对象中有一个属性是需要延迟加载的,那整 ...
- MyBatis原理分析
MyBatis原理分析 参考博客: 深入理解mybatis原理: http://blog.csdn.net/luanlouis/article/details/40422941 一 . JDBC的 ...
- DIY.NETORM框架——总体分析
一.故事 近些年一直开发MIS系统,用过PB,VB,C# .如今学了半年的java,早先听人说,.NET和 java一直就是互相借鉴.一起升级.都是为了让程序开发趋于简单,高校,而这不可避免就肯定用 ...
- mybatis 04: mybatis对象分析 + 测试代码简化 + 配置优化
MyBatis对象分析 测试代码示例 package com.example.test; import com.example.pojo.Student; import org.apache.ibat ...
- Mybatis原理分析之二:框架整体设计
1.引言 本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络.后面文章我们再详细讲解各个组件. 2.整体设计 2.1 总体流程 (1)加载配置并初始化 触发条件:加载配置文件 ...
- Mybatis原理分析之一:从JDBC到Mybatis
1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架.再而论述Mybatis作为一个数据持久层框架本身有待改进之处. 2 ...
- mybatis源代码分析:深入了解mybatis延迟加载机制
下文从mybatis(3.2.7)延迟加载样例讲起,逐步深入其实现机制. 下面的例子是Student类关联一个Teacher对象,在访问Student对象时,不立即加载其关联的Teacher对象,而是 ...
- Mybatis 缓存分析
其实本来不想专门的写一篇关于mybatis缓存的博客的.在之前的博客中已经大致的把mybatis的整体流程讲了一遍.只要按照步骤一步步的点进去,关于缓存的代码很容易就能发现.但是今天在看代码的时候突然 ...
- mybatis异常分析jdbcType
Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Error setti ...
随机推荐
- Transformer详解
0 简述 Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行. 并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提 ...
- ZOJ Problem Set - 1006
注意:A的ascii为65,a为97就行了 其他没什么,略过. 代码参看: http://my.oschina.net/dianpaopao/blog/124545
- 随笔--第一次使用crontab linux选择编辑器问题
第一次使用crontab 时,会出现:no crontab for root - using an empty one “Select a editor ......”下面有几个选项,就是叫你选择编辑 ...
- LESSON 7- High Rate Quantizers and Waveform Encoding
1. The Lloyd-Max algorithm is hill-climbing algorithm 第六节最后提出一个好的quantizer必须满足Lloyd-Max条件,但满足Ll ...
- 小菜鸟之servlet
# Servlet课程-1和2和3 容 Web项目 项目代码部署在服务器上, 一般分为c\s(客户端\服务器端)和b\s(浏览器/服务器) 服务器 常用的服务器(tomcat服务器) tomcat的目 ...
- Golang 无法下载依赖 golang.org (GoLand解决方法)
如下图所示将Proxy设置为:https://goproxy.io/
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- C++中枚举类型的作用
(1)C++中会使用const或者#define定义整型常量,当整型常量有多个且之间的值的全部或部分有递加的时候,定义起来稍显繁琐,此时用枚举类型显得很简洁: 例如: //使用const: const ...
- PHPRedis教程之geo
前言 支持 GEO 系列命令的 Redis 版本从 3.2.0 起开始才可以使用,所以之前版本就不要想了. 函数列表 geoadd - 将指定的地理空间项(纬度,经度,名称)添加到指定的键, 数据作为 ...
- nginx自定义log_format以及输出自定义http头
官方文档地址: http://nginx.org/en/docs/http/ngx_http_log_module.html 一.log_format默认格式 首先Nginx默认的log_format ...