`
denger
  • 浏览: 359513 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MyBatis+Spring基于接口编程的原理分析

    博客分类:
  • Java
阅读更多
move to: http://www.iteye.com/topic/1060588
  • 大小: 12.6 KB
分享到:
评论
17 楼 zhys513 2013-01-16  
  确实是最近看的分析mybatis比较精彩的一篇文章。
16 楼 guazi 2012-12-21  
分析的不错,今天才知道mybatis有这个用法。
15 楼 什么向往 2012-09-21  
最近也在看源码,分析的很透彻,学习了
14 楼 denger 2012-08-24  
kiis 写道
88548886 写道
博客,分析的很透彻,我一直不明白SqlSession.getMapper()的mapper对象是怎么来的,因为并没有任何一个类实现了这个接口,但是JDK的Proxy代理的目标类也需要是一个具体类吧,否则怎么能产生代理对象呢?我觉得问题可能出在定义在Interface方法上的那些注解后面的解释器,例如你文中提到的
@Select("select * from tab_uc_account where id=#{userId}")  
User getUser(@Param("userId") Long userId);  

事实上经过你透彻的分析之后,我还是没有明白它实现的原理,恕我愚钝,实在理解不了这些框架复杂的设计模式,希望博主有空的时候能教教我怎么读源码,在下拜谢了!

和注解应该没关系,这里是动态生成的实现类,并没有真的去实现,只是为了代理去动态生成了实现类

Right!
13 楼 kiis 2012-08-24  
88548886 写道
博客,分析的很透彻,我一直不明白SqlSession.getMapper()的mapper对象是怎么来的,因为并没有任何一个类实现了这个接口,但是JDK的Proxy代理的目标类也需要是一个具体类吧,否则怎么能产生代理对象呢?我觉得问题可能出在定义在Interface方法上的那些注解后面的解释器,例如你文中提到的
@Select("select * from tab_uc_account where id=#{userId}")  
User getUser(@Param("userId") Long userId);  

事实上经过你透彻的分析之后,我还是没有明白它实现的原理,恕我愚钝,实在理解不了这些框架复杂的设计模式,希望博主有空的时候能教教我怎么读源码,在下拜谢了!

和注解应该没关系,这里是动态生成的实现类,并没有真的去实现,只是为了代理去动态生成了实现类
12 楼 88548886 2012-06-29  
有谁能告诉我注解的解释器如何工作,虚心求教,有知道的加我QQ88548886,谢谢了!
11 楼 88548886 2012-06-29  
不甘心又去看了源代码
@SuppressWarnings("unchecked")
  public static <T> T newMapperProxy(Class<T> mapperInterface, SqlSession sqlSession) {
    ClassLoader classLoader = mapperInterface.getClassLoader();
    Class<?>[] interfaces = new Class[]{mapperInterface};
    MapperProxy proxy = new MapperProxy(sqlSession);    return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
  }

发现红色字体的位置,把sqlSession封装成一个MapperProxy,这个类实现了InvocationHandler, Serializable接口,还是不找到,接口上定义的注解的解释器是怎么工作的。
10 楼 88548886 2012-06-29  
博客,分析的很透彻,我一直不明白SqlSession.getMapper()的mapper对象是怎么来的,因为并没有任何一个类实现了这个接口,但是JDK的Proxy代理的目标类也需要是一个具体类吧,否则怎么能产生代理对象呢?我觉得问题可能出在定义在Interface方法上的那些注解后面的解释器,例如你文中提到的
@Select("select * from tab_uc_account where id=#{userId}")  
User getUser(@Param("userId") Long userId);  

事实上经过你透彻的分析之后,我还是没有明白它实现的原理,恕我愚钝,实在理解不了这些框架复杂的设计模式,希望博主有空的时候能教教我怎么读源码,在下拜谢了!
9 楼 mojunbin 2012-05-24  
对于mybatis网络上的文章(中文).我感觉博主的文章质量比较好哈..
8 楼 denger 2011-10-22  
看看mybatis 上的 google code 代码,里面有例子呀。
7 楼 lzxz1234 2011-10-22  
哥们源码还有没,传我一份吧,找你说的整的还是有问题跑步起来
6 楼 stkstm 2011-10-20  
怎么我按你的来配置 测试 老报java.lang.NullPointerException 就是我来调用mapper方法的时候
5 楼 obullxl 2011-05-31  
分析很透彻明白,赞!!!
4 楼 yzhw 2011-05-31  
兄弟我现在用seam,一直想用一下spring3,收了,呵呵
3 楼 crskyp 2011-05-31  
学习了。。。。
2 楼 absolute 2011-05-31  
我们最近也在用ibatis,多谢楼主分享
1 楼 liberD 2011-05-31  
非常好!楼主分析的很透彻!有机会交流交流!O(∩_∩)O哈哈~

相关推荐

    MyBatis+Spring+Struts2

    源码分析可以帮助我们了解这三大框架如何协同工作,例如,Struts2如何转发请求到Spring管理的Bean,Spring如何调用MyBatis执行SQL,以及MyBatis如何将数据库结果映射到Java对象。 【工具】在开发过程中,开发者通常...

    spring+mybatis+quartz

    在整合这三个技术时,通常会使用Spring的ApplicationContext来加载配置,包含MyBatis的SqlSessionFactory和Mapper接口,以及Quartz的Scheduler实例。MyBatis的配置文件中,会指定数据源、事务管理器以及Mapper文件的...

    java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip

    本项目"java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip"是一个基于若依(RuoYi)框架改造的多模块分布式事务解决方案,它利用了Atomikos这一强大的分布式事务管理器。以下将详细解析这个项目的知识点...

    Spring整合Mybatis与SpringBoot整合Mybatis原理分析

    **Spring整合Mybatis原理分析** 在Java Web开发中,Spring框架以其强大的依赖注入和面向切面编程能力,成为了事实上的核心框架。Mybatis则是一个轻量级的持久层框架,它简化了数据库操作,提供了直观的SQL映射。将...

    Spring+SpringMVC+Mybatis资源课件

    标题 "Spring+SpringMVC+Mybatis资源课件" 提供了一个学习路径,涉及Java开发中的三个关键组件:Spring框架、SpringMVC和Mybatis。这些技术是构建现代企业级Web应用程序的基础,尤其是在Java世界中。 Spring框架是...

    SpringMVC+Spring+myBatis+Maven源码

    myBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录,使得开发者可以更加专注于业务逻辑的实现,而无需关心繁琐的数据库操作。...

    struts+spring+mybatis源代码例子

    通过分析和研究这个源代码,开发者可以深入理解它们的协同工作原理,以及如何在项目中实现业务逻辑、控制流程和数据访问。 描述中提到的"ruts+spring+mybatis源代码例子,留给大家参考"表明这个压缩包提供的不仅仅...

    spring+mybatis+ligerui

    【Spring+Mybatis+LigerUI】:这是一个基于Spring、Mybatis和LigerUI构建的简单Web应用程序示例。Spring作为一个全面的Java企业级应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等核心...

    SSM框架之员工信息查询系统(Spring mvc + mybatis + mysql + easyui )

    在实际项目中,"TickerDemo20170614_2"可能是项目的源码包或者相关资源文件,包含着SSM框架的配置文件(如spring-servlet.xml、mybatis-config.xml)、实体类(Employee)、Mapper接口与XML映射文件、Controller类...

    二年级JAVAEE学生信息管理系统_Spring+SpringMVC+Mybatis+Mysql+Tomcat.zip

    《二年级JAVAEE学生信息管理系统:Spring+SpringMVC+Mybatis+Mysql+Tomcat实践解析》 在信息技术日益发达的今天,信息化管理已成为各行各业不可或缺的重要组成部分。本项目——"二年级JAVAEE学生信息管理系统",...

    Springboot+MyBatis+MySQL实现多功能个人博客系统.zip

    对于学生来说,这个项目不仅能提升Java编程技能,还能了解Springboot的自动配置原理、MyBatis的映射机制,以及数据库的设计和优化。同时,通过实际的开发流程,可以学习到如何从需求出发,进行系统分析、设计、编码...

    Spring MVC+MYBatis企业应用实战

    《Spring MVC+MYBatis企业应用实战》是针对已有一定编程框架基础的学习者设计的一份实战教程,旨在深入解析在企业级项目中如何有效结合Spring、Spring MVC和MyBatis这三个核心组件,构建高效、可维护的Web应用程序。...

    mi-clima:使用 MyBatis + Spring + JSF2 + Primefaces 学习练习

    `mi-clima` 是一个基于Java技术栈的Web应用程序学习实践项目,它结合了MyBatis、Spring、JSF2(JavaServer Faces 2)和Primefaces这四个核心技术,旨在帮助开发者熟悉这些组件的集成与应用。通过分析这个项目,我们...

    基于spring+spring mvc+mybatis的图书管理系统源码

    总的来说,"基于Spring+Spring MVC+Mybatis的图书管理系统源码"是一个典型的Java Web项目,展示了SSM框架在实际开发中的应用,提供了从数据存取、业务处理到用户交互的完整解决方案。通过学习和分析这套源码,开发者...

    毕业设计校园闲置物品交易系统(springboot+mybatis+oracle).zip

    在本项目中,MyBatis通过Mapper接口与XML配置文件,实现了数据操作的声明式编程,使得数据查询和更新更为直观和可控。 Oracle数据库是关系型数据库管理系统中的佼佼者,以其强大的事务处理能力、高可用性和安全性被...

    spring-mybatis-spring-2.1.0.zip

    首先,让我们理解Spring与MyBatis的整合原理。MyBatis-Spring是专门为这两种框架设计的桥梁,它使得MyBatis的SqlSession和Mapper接口可以无缝集成到Spring的管理环境中。通过MyBatis-Spring,我们可以将MyBatis的...

    SpringBoot+Spring+MyBatis-51问-面试用

    【SpringBoot+Spring+MyBatis-51问-面试用】 1. **SpringBoot** 是什么? SpringBoot 是一款 Java 开发框架,被广泛认为是一个“脚手架”。它的设计目标是简化Spring应用程序的初始设置和开发过程,遵循“约定优于...

    myeclipse+springmvc+spring+mybatis案例附带mysql数据库

    6. **项目配置**:分析web.xml、spring配置文件、mybatis配置文件等,理解各个框架之间的集成与配置。 7. **Maven或Gradle构建**:可能涉及到的项目构建工具,用于管理和依赖项的下载。 8. **单元测试与集成测试**:...

    SSM(Spring+springmvc+mybatis)项目实例.zip

    在这个"SSM(Spring+springmvc+mybatis)项目实例.zip"压缩包中,包含了一个实际的SSM项目和相关的SQL文件,这将有助于我们深入理解SSM框架的工作原理和应用。 首先,Spring框架是整个SSM中的核心,它负责管理对象...

    基于Servlet+Spring+Mybatis的客户关系管理系统.zip

    《基于Servlet+Spring+Mybatis的客户关系管理系统详解》 客户关系管理(CRM)系统是企业信息化建设中的重要组成部分,它帮助企业高效管理客户信息、跟踪销售进度、优化客户服务,从而提高企业的竞争力。本项目采用...

Global site tag (gtag.js) - Google Analytics