MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO映射成数据库中的记录。

  MyBatis底层实现技术细节:xml解析 + 反射 + jdk动态代理

  首先我们来说说为什么要使用jdk动态代理?

  传统的开发方式:

  1. 接口定义业务方法。
  2. 实现类实现业务方法。
  3. 业务逻辑里实例化实现类来完成业务操作。

  缺点:高耦合度。

  Mybatis的方式:

  1. 开发者只需要创建接口,定义业务方法,不需要接口实现类。
  2. 具体的业务操作通过配置xml来完成。

  问题:我们知道Java是面向对象的编程语言,程序在运行时执行业务方法,必须要有实例化的对象。但是,接口是不能被实例化的,而且也没有接口的实现类,那么此时这个对象从哪里来呢?

  答案:程序在运行时,动态创建代理对象。jdk动态代理,运行时结合接口和mapper.xml来动态创建一个代理对象,程序调用该代理对象的方法来完成业务操作。

  问题:如何实现jdk动态代理?

  1. 创建一个类,实现InvocationHandler接口,该类就具备了创建动态代理对象的功能。
  2. 自定义getInstance方法:入参为目标对象,通过Proxy.newProxyInstance方法创建代理对象,并返回。
  3. 实现接口的invoke方法,通过反射机制完成业务逻辑代码。

转载于:https://www.cnblogs.com/yaokaizhi/p/9559483.html

MyBatis自学(1):MyBatis概述相关推荐

  1. 【MyBatis框架】mybatis入门

    框架:应用的半成品,一组组件,是成熟的,不断升级的软件. (1)应用:整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法: (2)目的:被应用开发者定制的应用骨架 不同框架解决的不同 ...

  2. 第一个Mybatis程序示例 Mybatis简介(一)

    在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于"internet& ...

  3. 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

    MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上.MyBatis提供了一级缓存.二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能.本 ...

  4. 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo

    前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...

  5. 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现

    本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论. MyBatis将数据缓存设计成两级结构,分为一级缓存 ...

  6. java整合mybatis,springboot集成mybatis

    # springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...

  7. mybatis实战教程(mybatis in action),mybatis入门到精通

     目录(?) [-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程 ...

  8. 深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)

    文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章 ...

  9. MyBatis之优化MyBatis配置文件中的配置

    MyBatis之优化MyBatis配置文件中的配置 2017/9/30 MyBatis配置文件很重要,首先我们来看看MyBatis配置文件中的内容和顺序: 文件目录结构如下: 1.<proper ...

  10. 【MyBatis框架】mybatis逆向工程自动生成代码

    逆向工程 1.什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xm ...

最新文章

  1. 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承...
  2. Vimium - 让Chrome高效工作的神器
  3. http的“无连接”指的是_【38期】一份tcp、http面试指南,常考点都给你了
  4. 如何計算SDRAM使用頻寬?
  5. 关于UI交互设计方面一些考虑的问题
  6. 养成一个习惯需要多久?
  7. C#中串口组件的使用方法总结及上位机制作方法
  8. SAP系统权限管理及参数设置
  9. 计算机认识新朋友教案,小班教案认识新朋友
  10. CSS基础(part13)--浮动
  11. LDAP第三天 MySQL+LDAP 安装
  12. C语言构建一个链表以及操作链表
  13. fiddler自定义显示目标IP和时间
  14. Stata | 初试
  15. Unity 3D安装教程
  16. matlab dx dy dt,y/(y^2+1)dy=dx/(x^2-1)
  17. KGC的衡量指标(MR、MRR、Hits@n)
  18. 女码农献丑-企业智能机器人客服(图灵机器人)
  19. 如何靠代码发家致富?——10种可以赚钱的途径
  20. 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本

热门文章

  1. 统计字符串元素出现的个数_LeetCode 1295. 统计位数为偶数的数字
  2. python爬虫 去哪网数据分析
  3. Django基础-安装配置
  4. sccm 2007 r2 step by step 之十五 补丁管理
  5. 总结相对路径和绝对路径的写法
  6. Chrome 浏览器创建网站快捷方式(加入收藏夹)代码
  7. 为 Office 2007/2010 安装程序整合 Service Pack 及更新程序
  8. 修改系统时间导致myeclipse不能自动发布的解决方法
  9. WCF在安全性方面的支持(1):一些概念
  10. Spring 依赖注入(集合)/util命名空间/自动注入