1.iBATIS框架源码剖析内容简介
2.mybatisåibatisçåºå«
3.hibernateåibatisçåºå«
4.ibatis 源码是什么
5.MyBatis源码解析之基础模块—TypeHandler
iBATIS框架源码剖析内容简介
本书以深入剖析iBATIS框架为核心内容,分为三个部分。源码首先,源码第一章将带领读者回顾iBATIS的源码基础知识,为后续深入理解奠定基础。源码 第二部分,源码nfc apk 源码读者将了解到iBATIS DAO框架的源码结构及其实现原理,包括框架的源码核心组件和工作流程。这一部分详细解释了DAO的源码构建和如何与数据库交互。 重中之重的源码是第三部分,主要聚焦于iBATIS的源码底层平台——iBATIS SQL Map。首先,源码我们会揭示SQL Map如何解析和加载配置信息,源码展示配置管理的源码关键环节。接着,源码深入探讨SQL Map引擎的运作机制,以及它如何构建出独特的项目管理 的源码框架结构,涉及核心实现步骤和事务管理、数据库连接池等关键功能。 此外,还会剖析SQL Map中Mapping的实现,这是iBATIS区别于其他ORM框架的独特之处。讲解如何通过TypeHandler进行类型转换,以及iBATIS常用工具的运用,帮助读者掌握核心技术。中华傲决 源码 在源码解析的过程中,作者采用代码注释、UML分析、设计模式的运用以及实际案例的讲解,全方位展示iBATIS的实现策略和编程技巧。这不仅有助于读者理解开发者的思维模式,也为他们在实际项目开发中提供有价值的参考和实践指导。 本书特别适合软件设计师、变声器的源码架构师以及具备扎实Java基础的开发者,无论是作为iBATIS学习的参考资料,还是在设计阶段的决策支持,都能从中获益匪浅。扩展资料
iBATIS是一种比较流行的ORM框架,本书全面介绍其结构体系和分析其源程序代码,该框架的核心包括两个组件,一个是源码管理器iBATIS DAO,另一个是iBATIS SQL Map。mybatisåibatisçåºå«
1ãåºæ¬ä¿¡æ¯ä¸åmybatisï¼MyBatis æ¯ä¸æ¬¾ä¼ç§çæä¹ å±æ¡æ¶ï¼å®æ¯æå®å¶å SQLãåå¨è¿ç¨ä»¥åé«çº§æ å°ãMyBatis é¿å äºå ä¹ææç JDBC 代ç åæå¨è®¾ç½®åæ°ä»¥åè·åç»æéã
MyBatis å¯ä»¥ä½¿ç¨ç®åç XML æ注解æ¥é ç½®åæ å°åçä¿¡æ¯ï¼å°æ¥å£å Java ç POJOs(Plain Ordinary Java Object,æ®éç Java对象)æ å°ææ°æ®åºä¸çè®°å½ã
ibatisï¼iBATISæä¾çæä¹ å±æ¡æ¶å æ¬SQL MapsåData Access Objectsï¼DAOï¼ï¼åæ¶è¿æä¾ä¸ä¸ªå©ç¨è¿ä¸ªæ¡æ¶å¼åçJPetStoreå®ä¾ãç¸å¯¹HibernateåApacheOJBçâä¸ç«å¼âORM解å³æ¹æ¡èè¨ï¼ibatis æ¯ä¸ç§âåèªå¨åâçORMå®ç°ã
iBATIS ç®åæä¾äºä¸ç§è¯è¨å®ç°ççæ¬ï¼å æ¬ï¼Javaã.NET以åRubyã
2ãå¼åæ¶é´ä¸å
mybatisï¼MyBatis æ¬æ¯apacheçä¸ä¸ªå¼æºé¡¹ç®iBatis, å¹´è¿ä¸ªé¡¹ç®ç±apache software foundation è¿ç§»å°äºgoogle codeï¼å¹¶ä¸æ¹å为MyBatis ãå¹´æè¿ç§»å°Githubã
ibatisï¼iBATISä¸è¯æ¥æºäºâinternetâåâabatisâçç»åï¼æ¯ä¸ä¸ªç±Clinton Beginå¨å¹´åèµ·çå¼æ¾æºä»£ç 项ç®ã
3ãé ç½®æ¹æ³ä¸å
mybatisç®åäºç¼ç çè¿ç¨ï¼ä¸éè¦å»ådaoçå®ç°ç±»ï¼ç´æ¥åä¸ä¸ªdaoçæ¥å£ï¼ååä¸ä¸ªxmlé ç½®æ件ï¼æ´ä¸ªmybatiså°±é 置好äºï¼ä¹å°±æ¯æ°æ®åºå°±è¿æ¥å¥½äºï¼ç¶åå¨serviceéé¢ç´æ¥è°ç¨daoå°±å¯ä»¥äºï¼ä½æ¯ibatisåä¸å¯ä»¥ï¼å¿ é¡»è¦ådaoçå®ç°ç±»ãmybatisæ¯ibatisçå级çæ¬ã
åèèµæï¼ç¾åº¦ç¾ç§-mybatis
åèèµæï¼ç¾åº¦ç¾ç§-ibatis
hibernateåibatisçåºå«
æ¨è解çï¼1ï¼
Hibernate ããHibernateæ¯ä¸ä¸ªå¼æ¾æºä»£ç çå¯¹è±¡å ³ç³»æ å°æ¡æ¶ï¼å®å¯¹JDBCè¿è¡äºé常轻é级ç对象å°è£ ï¼ä½¿å¾Javaç¨åºåå¯ä»¥éå¿æ欲ç使ç¨å¯¹è±¡ç¼ç¨æç»´æ¥æ纵æ°æ®åºã Hibernateå¯ä»¥åºç¨å¨ä»»ä½ä½¿ç¨JDBCçåºåï¼æ¢å¯ä»¥å¨Javaç客æ·ç«¯ç¨åºå®ç¨ï¼ä¹å¯ä»¥å¨Servlet/JSPçWebåºç¨ä¸ä½¿ç¨ï¼æå ·é©å½æä¹çæ¯ï¼Hibernateå¯ä»¥å¨åºç¨EJBçJ2EEæ¶æä¸å代CMPï¼å®ææ°æ®æä¹ åçéä»»ãEclipseå¹³å°ä¸çHibernateè¾ å©å¼åå·¥å ·:ãHibernate SynchronizerããMiddlegenIDEã ããIBATIS ãã使ç¨ibatis æä¾çORMæºå¶ï¼å¯¹ä¸å¡é»è¾å®ç°äººåèè¨ï¼é¢å¯¹çæ¯çº¯ç²¹çJavaå¯¹è±¡ï¼ è¿ä¸å±ä¸éè¿Hibernate å®ç°ORM èè¨åºæ¬ä¸è´ï¼è对äºå ·ä½çæ°æ®æä½ï¼Hibernate ä¼èªå¨çæSQL è¯å¥ï¼èibatis åè¦æ±å¼åè ç¼åå ·ä½çSQL è¯å¥ãç¸å¯¹Hibernateç âå ¨èªå¨âORMæºå¶èè¨ï¼ibatis 以SQLå¼åçå·¥ä½éåæ°æ®åºç§»æ¤æ§ä¸ç让æ¥ï¼ä¸ºç³»ç» 设计æä¾äºæ´å¤§çèªç±ç©ºé´ãä½ä¸ºâå ¨èªå¨âORM å®ç°çä¸ç§æçè¡¥å ï¼ibatis çåºç°æ¾ å¾å«å ·æä¹ã
[æ°æ®æå¿« 大æ°æ®å®éªå®¤æä¾ ][datacaptor from aosustudio]
æ¨è解çï¼2ï¼
ä¸.å ±åç¹ï¼
1.é½æ¯O/R mappingæ¡æ¶ï¼ç´æ¥ä¸æ°æ®åºæ交éã
2.é½æä¾æ¹è¨æ¯æä¸åç±»åæ°æ®åºç访é®ï¼éè¿xmlæä»¶æ ¼å¼å°æ°æ®åºè¡¨ä¸java对象è¿æ¥èµ·æ¥ã
3.é½å¯ä»¥äº¤ç»springæ¥ç®¡ç
4.é½æ¯å¼æºè½¯ä»¶
äº.åºå«ï¼
hibernateæ¯å½åæµè¡çO/Ræ¡æ¶ï¼æ¥èªäºsf.netï¼ç°å¨å·²æ为HBOSSçä¸é¨åã hibernateç¸å¯¹è¾å¤æï¼å¦ä¹ å¨æé¿ã
ibatis/mybatis æ¯å¦å¤ä¸ç§ä¼ç§ço/r mappingæ¡æ¶ï¼ç®åå±äºapacheçä¸ä¸ªå项ç®äºãibatisä¸æå¿«ï¼å¾å®¹æå¦å¦ä¹ ã
ä¸åçï¼
hibernate对æ°æ®ç»æè¿è¡äºå¾å¥½çå°è£ ï¼å¯ä»¥å®ç°java对象ä¹å°±æ¯POJOæ¯æ°æ®åºè¡¨ä¹é´çæ å°ï¼è¿è½æ ¹æ®POJOåSQLèªå¨çæ表åæ§è¡å½ä»¤ãç¨åºåå¾å¾åªéå®ä¹å¥½äºpojo å°æ°æ®åºè¡¨çæ å°å ³ç³»ï¼å³å¯éè¿hibernate æä¾çæ¹æ³å®ææä¹ å±æä½ãç¨åºåçè³ä¸éè¦å¯¹sql ççç»ææ¡ï¼ hibernate/ojb ä¼æ ¹æ®å¶å®çåå¨é»è¾ï¼èªå¨çæ对åºçsql 并è°ç¨jdbc æ¥å£å 以æ§è¡ã
èibatis åéç¹å¨äºpojo ä¸sqlä¹é´çæ å°å ³ç³»ãibatisä¸è½è®©æ们éè¿POJOçæSQLè¯å¥æ¥æ§è¡ ãå ·ä½çsql éè¦ç¨åºåç¼åï¼ç¶åéè¿æ å°é ç½®æ件ï¼å°sqlæéçåæ°ï¼ä»¥åè¿åçç»æå段æ å°å°æå®pojoã
å.æºå¶
使ç¨ibatis æä¾çormæºå¶ï¼å¯¹ä¸å¡é»è¾å®ç°äººåèè¨ï¼é¢å¯¹çæ¯çº¯ç²¹çjava对象ãè¿ä¸å±ä¸éè¿hibernate å®ç°orm èè¨åºæ¬ä¸è´ï¼è对äºå ·ä½çæ°æ®æä½ï¼hibernateä¼èªå¨çæsql è¯å¥ï¼èibatis åè¦æ±å¼åè ç¼åå ·ä½çsql è¯å¥ãç¸å¯¹hibernateèè¨ï¼ibatis 以sqlå¼åçå·¥ä½éåæ°æ®åºç§»æ¤æ§ä¸ç让æ¥ï¼ä¸ºç³»ç»è®¾è®¡æä¾äºæ´å¤§çèªç±ç©ºé´ã
äº.ç³»ç»ç»´æ¤æè äºæ¬¡å¼å
å½ç³»ç»ç»´æ¤æè äºæ¬¡å¼å,æ æ³å¯¹æ°æ®åºç»æåå°æ§å¶åä¿®æ¹,é£ibatisççµæ´»æ§å°æ¯hibernateæ´éå
å .æµ·éæ°æ®
ç³»ç»æ°æ®å¤çé巨大ï¼æ§è½è¦æ±æ为èå»ï¼è¿å¾å¾æå³çæä»¬å¿ é¡»éè¿ç»è¿é«åº¦ä¼åçsqlè¯å¥ï¼æåå¨è¿ç¨ï¼æè½è¾¾å°ç³»ç»æ§è½è®¾è®¡ææ ãå¨è¿ç§æ åµä¸ibatisä¼ææ´å¥½çå¯æ§æ§å表ç°ã
ä¸.èªå¨åç¨åº¦
ibatiséè¦æåsqlè¯å¥ï¼ä¹å¯ä»¥çæä¸é¨åï¼hibernateååºæ¬ä¸å¯ä»¥èªå¨çæï¼å¶å°ä¼åä¸äºhqlãåæ ·çéæ±,ibatisçå·¥ä½éæ¯ hibernateè¦å¤§å¾å¤ã类似çï¼å¦ææ¶åå°æ°æ®åºå段çä¿®æ¹ï¼hibernateä¿®æ¹çå°æ¹å¾å°ï¼èibatisè¦æé£äºsql mappingçå°æ¹ä¸ä¸ä¿®æ¹ã
å «.ä¸æ°æ®æ å°å ³ç³»
ibatis以æ°æ®åºå段ä¸ä¸å¯¹åºæ å°å¾å°çpoåhibernteè¿ç§å¯¹è±¡åæ å°å¾å°çpoæ¯æªç¶ä¸åçï¼æ¬è´¨åºå«å¨äºè¿ç§poæ¯æå¹³åçï¼ä¸åhibernateæ å°çpoæ¯å¯ä»¥è¡¨è¾¾ç«ä½ç对象继æ¿ï¼èåççå ³ç³»çï¼è¿å°ä¼ç´æ¥å½±åå°ä½ çæ´ä¸ªè½¯ä»¶ç³»ç»ç设计æè·¯ã
ä¹.ææ¯æ¯æ
hibernateç°å¨å·²ç»æ¯ä¸»æµo/r mappingæ¡æ¶ï¼ä»ææ¡£ç丰å¯æ§ï¼äº§åçå®åæ§ï¼çæ¬çå¼åé度é½è¦å¼ºäºibatis
å.å®ç°è¿ç¨æ¥ç
1.hibernateé ç½®,è¿è¡æ°æ®åºè¿æ¥ã
2.POJOä¸æ°æ®åºæ å°çxmlæ件ä»ç»
3..å¾å°sessionFactoryæ们就å¯ä»¥éè¿ä¼è¯å·¥åæä½æ°æ®åº
4ãibatisé 置信æ¯è®¾ç½®
5.POJOä¸æ°æ®åºç建ç«xmlæ件å®ä¹
6.å è½½ibatisé ç½®æ件ï¼ç»clientåå§å
6.éè¿clientæä½æ°æ®åº
亲ï¼è®°å¾é纳ä¸ä¸å¦
[æ°æ®æå¿« 大æ°æ®å®éªå®¤æä¾ ][datacaptor from aosustudio]
æ¨è解çï¼3ï¼
é½æ¯javaçä¸ç§æ¡æ¶ï¼hibernateé çæ¯hqlè¯è¨ï¼é¢åçæ¯object,ibatisé çæ¯sqlè¯è¨ï¼æ´æ¥è¿æ°æ®åºï¼é ç½®æ¯hibernateçµæ´»ï¼ä¹æ¯hibernateæçé«
ibatis 是什么
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。
MyBatis源码解析之基础模块—TypeHandler
MyBatis源码解析之基础模块—TypeHandler
在MyBatis的上一章节中,我们探讨了Plugin模块的拦截器配置和自定义。接下来,我们将深入理解数据库与Java对象之间转换的核心机制,即Type模块的源码。 Type模块位于org.apache.ibatis.type,其架构设计包含IntegerTypeHandler和UnknownTypeHandler等实现类,用于处理不同类型的转换。JdbcType枚举定义了常见的数据库数据类型,MappedTypes和MappedJdbcTypes注解用于标注Java类型和数据库类型的映射。 对于类型转换,TypeHandler是核心接口,它定义了处理方法。BaseTypeHandler是抽象基类,采用模板方法模式,提供了通用逻辑,而具体实现由子类如IntegerTypeHandler完成。对于没有明确泛型类型的转换,UnknownTypeHandler则负责处理。 TypeAliasRegister负责注册Java常用数据类型的别名,而TypeHandlerRegister是类型转换器的注册中心,MyBatis在初始化时已经自动注册了常用TypeHandler。ResultSetWrapper则负责包装ResultSet,提供类型转换器的获取,最终由ResultSetHandler处理实际的数据处理。 总结来说,Type模块在MyBatis中负责数据的类型转换,通过TypeHandler和相关的注册机制,确保了数据库操作与Java对象之间的无缝对接。在实际开发中,无需过多配置,MyBatis就能自动完成类型转换,使得开发更为便捷。