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测试代码

Java代码
  1. public class Test {  
  2.     public static void main(String[] args) throws Exception {  
  3.         String resource = "test-mybatis-config.xml";  
  4.   
  5.         Reader reader = Resources.getResourceAsReader(resource);  
  6.   
  7.         SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);  
  8.   
  9.         SqlSession session = ssf.openSession();  
  10.   
  11.         TestData params = new TestData();  
  12.         params.setId("1");  
  13.         session.selectList("com.thinkgem.jeesite.test.dao.TestDataDao.get", params);  
  14.   
  15.     }  
  16. }  

 

 

Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  3. <configuration>  
  4.     <!-- url和resource不能同时配置, url和resource优先级高于内部 -->  
  5.     <properties resource="jeesite.properties">  
  6.         <property name="jdbc.password" value="1"/>  
  7.     </properties>  
  8.     <environments default="myexample">  
  9.         <environment id="myexample">  
  10.             <transactionManager type="JDBC" />  
  11.             <dataSource type="POOLED">  
  12.                 <property name="driver" value="${jdbc.driver}" />  
  13.                 <property name="url" value="${jdbc.url}" />  
  14.                 <property name="username" value="${jdbc.username}" />  
  15.                 <property name="password" value="${jdbc.password}" />  
  16.             </dataSource>  
  17.         </environment>  
  18.     </environments>  
  19.     <mappers>  
  20.         <mapper resource="TestDataDao.xml" />  
  21.     </mappers>  
  22. </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版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值