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版本
相关推荐
SFTP 源码浅析 1 SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种安全的文件传输协议,主要用于在网络中安全地传输文件。该协议基于 SSH(Secure Shell,安全shell)协议,提供了身份验证、加密和...
dlmalloc内存分配器源码浅析 内存分配器dlmalloc_2.8.3源码浅析是学习 Linux 经典代码的重要资源,本文将对dlmalloc的源码进行详细分析,探索其内存分配和回收机制。 边界标记法 dlmalloc使用边界标记法来管理...
基于Spring和MyBaties的会议室管理系统设计源码,该项目共有210个文件,主要文件类型包括42个class字节码文件,42个jar打包文件,34个xml配置文件,26个html页面文件,21个java源文件,12个png图像文件,8个css样式...
《网狐6.6完整源码与内核源码解析:105款游戏源码解密探索》 在IT行业中,源码是程序开发的核心,它揭示了软件的内部工作机制,是程序员进行二次开发、优化和调试的基础。"网狐6.6完整源码+内核源码+105款游戏源码...
微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...
本资料“计算机软件-商业源码-浅析桌面精灵的实现.zip”包含了对桌面精灵实现的深入探讨,对于学习和开发此类应用的程序员来说具有很高的参考价值。 首先,我们要了解桌面精灵的基本结构。一个典型的桌面精灵由以下...
SSCOM源码 DELPHI 源码 绝对源码!欢迎下载
本资源包含2000套微信小程序的源码,对于开发者来说是一份宝贵的参考资料,可以用来学习、研究或者作为开发新项目的起点。 源码下载是开发者获取程序原始代码的方式,对于学习和理解编程逻辑至关重要。这些微信小...
电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序源码+后台分享,亲测可用,有需要的朋友拿去!!! 电商微信小程序...
订餐网,外卖网源码,带积分商城,商家系统,外卖网站建设! 系统特点: 周密策划、项目为先 "项目指导技术,技术服从项目",这是我们一贯秉承的原则,也是我们与其他系统开发商、网站建设公司的本质区别所在!我们...
易语言源码就是用这种语言编写的程序代码,通过阅读和理解这些源码,开发者可以学习到如何利用易语言来实现特定功能,比如变速齿轮。 在易语言中实现变速齿轮功能,主要涉及到以下几个关键知识点: 1. **系统时间...
Android源码浅析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置-附件资源
移动医疗APP源码是开发医疗健康应用的核心组成部分,它包含了应用程序的所有逻辑和界面设计。在Android平台上,这种源码通常是用Java或Kotlin语言编写的,并使用Android Studio作为集成开发环境(IDE)。在这个案例...
ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh框架项目源码ssh...
《cocos creator完整麻将源码解析与开发指南》 cocos Creator是一款强大的2D游戏开发引擎,被广泛应用于游戏开发,尤其是休闲娱乐类游戏,如麻将。本篇将深入探讨"麻将源码"这一主题,结合cocos Creator的特性,为...
捕鱼游戏源码是一种基于计算机编程技术,用于开发模拟海洋捕鱼场景的电子游戏的代码集合。这类源码通常包含了游戏逻辑、图形渲染、音频处理、用户交互等多个方面的详细实现,为开发者提供了一个深入理解游戏开发过程...
0001-2科技发展有限公司升级版源码 0001科技发展有限公司修正版源码 0002机械配件制造销售公司修正版源码 0003家具地板公司修正版源码 0004-1机械有限公司修正版源码 0004机械有限公司修正版源码 0005机械产品公司...
供应链管理系统源码是一种用于管理企业内部以及与外部合作伙伴之间物流、信息流和资金流的软件解决方案。这个系统的核心目标是优化整个供应链流程,提高效率,降低成本,并确保在正确的时间、正确的地点提供正确的...