`

mybaties源码浅析

阅读更多

1.Mybatis介绍

    MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己: The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations.Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping tools. ORM是 Object和Relation之间的映射,包括Object->Relation和Relation->Object两方面。Hibernate是个完整的ORM框架,而MyBatis完成的是Relation->Object,也就是其所说的data mapper framework.。

2.整体设计

2.1功能架构设计



  

2.2接口

 

3.代码分析

 

 3.1测试代码

public class Test {
	public static void main(String[] args) throws Exception {
		String resource = "test-mybatis-config.xml";

		Reader reader = Resources.getResourceAsReader(resource);

		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);

		SqlSession session = ssf.openSession();

		TestData params = new TestData();
		params.setId("1");
		session.selectList("com.thinkgem.jeesite.test.dao.TestDataDao.get", params);

	}
}

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- url和resource不能同时配置, url和resource优先级高于内部 -->
	<properties resource="jeesite.properties">
		<property name="jdbc.password" value="1"/>
	</properties>
	<environments default="myexample">
		<environment id="myexample">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="TestDataDao.xml" />
	</mappers>
</configuration>

 3.2测试时序图



 
3.3源码

3.3.1配置文件解析

配置文件解析使用XMLConfigBuilder来解析

 3.2解析sql

通过SqlSource解析得到BoundSql。SqlSource代表从xml文件或注解映射的sql内容,BoundSql保护解析后的sql,参数,参数类型等。



 

其中SqlNode为xml中sql的每个标签信息
 

 测试代码的sql解析以MappedStatement.getBoundSql(Object parameterObject)开始



 

 

注:mybatis为3.2.8版本

  • 描述: 接口
  • 大小: 133.2 KB
  • 描述: 功能架构设计
  • 大小: 80.7 KB
  • 描述: 时序图
  • 大小: 93 KB
  • 大小: 42.3 KB
  • 大小: 17.4 KB
  • 大小: 30.4 KB
  • 大小: 38.5 KB
  • 大小: 50.7 KB
  • 大小: 17.3 KB
分享到:
评论

相关推荐

    内存分配器dlmalloc2.8.3源码浅析

    ### 内存分配器dlmalloc2.8.3源码浅析 #### 1. 边界标记法 dlmalloc采用边界标记法对内存进行高效管理。这种方法通过将可用内存分割成一系列固定大小的块(chunk),每个块都有特定的头部和尾部信息用于追踪其状态...

    SFTP 源码浅析1

    SFTP 源码浅析 1 SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种安全的文件传输协议,主要用于在网络中安全地传输文件。该协议基于 SSH(Secure Shell,安全shell)协议,提供了身份验证、加密和...

    内存分配器dlmalloc_2.8.3源码浅析

    dlmalloc内存分配器源码浅析 内存分配器dlmalloc_2.8.3源码浅析是学习 Linux 经典代码的重要资源,本文将对dlmalloc的源码进行详细分析,探索其内存分配和回收机制。 边界标记法 dlmalloc使用边界标记法来管理...

    基于Spring和MyBaties的会议室管理系统设计源码

    基于Spring和MyBaties的会议室管理系统设计源码,该项目共有210个文件,主要文件类型包括42个class字节码文件,42个jar打包文件,34个xml配置文件,26个html页面文件,21个java源文件,12个png图像文件,8个css样式...

    微信小程序商城系统源码

    微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...

    SSCOM源码 DELPHI 源码

    SSCOM源码 DELPHI 源码 绝对源码!欢迎下载

    微信小程序源码下载 微信小程序源码下载 2000套微信小程序源码

    本资源包含2000套微信小程序的源码,对于开发者来说是一份宝贵的参考资料,可以用来学习、研究或者作为开发新项目的起点。 源码下载是开发者获取程序原始代码的方式,对于学习和理解编程逻辑至关重要。这些微信小...

    电商微信小程序源码+后台

    电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序...

    饿了么源码 百度外卖源码 美团外卖源码 外卖系统源码

    订餐网,外卖网源码,带积分商城,商家系统,外卖网站建设! 系统特点: 周密策划、项目为先 "项目指导技术,技术服从项目",这是我们一贯秉承的原则,也是我们与其他系统开发商、网站建设公司的本质区别所在!我们...

    变速齿轮 易语言源码 变速齿轮源码 变速器源码

    易语言源码就是用这种语言编写的程序代码,通过阅读和理解这些源码,开发者可以学习到如何利用易语言来实现特定功能,比如变速齿轮。 在易语言中实现变速齿轮功能,主要涉及到以下几个关键知识点: 1. **系统时间...

    Android源码浅析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置-附件资源

    Android源码浅析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置-附件资源

    移动医疗APP源码 android (安卓版)妙手医生源码

    移动医疗APP源码是开发医疗健康应用的核心组成部分,它包含了应用程序的所有逻辑和界面设计。在Android平台上,这种源码通常是用Java或Kotlin语言编写的,并使用Android Studio作为集成开发环境(IDE)。在这个案例...

    cocos creator完整麻将源码下载

    《cocos creator完整麻将源码解析与开发指南》 cocos Creator是一款强大的2D游戏开发引擎,被广泛应用于游戏开发,尤其是休闲娱乐类游戏,如麻将。本篇将深入探讨"麻将源码"这一主题,结合cocos Creator的特性,为...

    捕鱼游戏源码 下载 最新完整版

    捕鱼游戏源码是一种基于计算机编程技术,用于开发模拟海洋捕鱼场景的电子游戏的代码集合。这类源码通常包含了游戏逻辑、图形渲染、音频处理、用户交互等多个方面的详细实现,为开发者提供了一个深入理解游戏开发过程...

    51套经典企业网站源码(一)

    0001-2科技发展有限公司升级版源码 0001科技发展有限公司修正版源码 0002机械配件制造销售公司修正版源码 0003家具地板公司修正版源码 0004-1机械有限公司修正版源码 0004机械有限公司修正版源码 0005机械产品公司...

    53客服系统源码 53kf源码

    在源码层面,53客服系统源码主要包含了以下几个关键知识点: 1. **多平台支持**:53客服系统通常支持网页、手机APP、微信等多种渠道的接入,源码中会有相应的接口实现,以确保用户可以通过不同的终端与客服进行交互...

    仿58同城赶集网源码

    分类源码,信息发布网站源码,信息源码,信息港网站源码,asp信息港源码,信息类网站源码,多种分类源码,信息网源码下载,asp信息网源码,信息发布系统源码,物流信息源码,房产信息网源码.net源码,公安信息网源码,家教信息...

    非常漂亮的个人博客网站源码

    标题中的“非常漂亮的个人博客网站源码”表明这是一个关于个人博客网站的设计与开发资源,它包含了一套完整的源代码,可以用于创建一个美观且个性化的博客平台。这种源码通常包括HTML、CSS、JavaScript等前端代码,...

Global site tag (gtag.js) - Google Analytics