mybatis持久层

为君一笑 提交于 2020-03-09 02:31:57

Mybayis介绍

  • Mybatis是由Apache的一个开源项目iBatis 2010年这个项目由 Apache software foundation迁移到 GoogleCode 并改名为Mybatis实质上Mybatis对ibatis进行了一些改进。

  • Mybatis作为优秀的持久层框架,它对jdbc操作数据库进行了封装,使开发者需要只关注Sql本身 不需要消耗多余经历去处理注册驱动关闭资源等等…

  • 执行原理

    (源码解读)
    1.同Resources加载已配置好的mybatis-config.xml配置文件,Resouces是ibatis.io包下的一个类,用于读写文件,通过getResourcesAstream把指定的xml文件加载进来 将指定的xml解析为流的操作,可以见的Resources.getResourceAsStream返回值为Inputstream 输入流。
    InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");

    2 .将获取到的IO输入流放入SqlSessionFactoryBuilder().build(resourceAsStream)获取到我们的SqlSessionFactory对象SqlSessionFactoryBuilder是SqlSessionFacory的构建者,通过阅读build内的源码发现 有一个XMLConfigBuilder对象 这个对象是用于解析xml的构建者。

    XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);

    通过XMLConfigBuilder内的方法parse()来解析我们的mybatis-config.xml配置文件
    其主要解析配置文件的方法为parseConfiguration方法进行读取配置信息
    parse()解析完毕后返回一个configuration其内部存放了mybatis核心配置文件解析完成后的结果。在这里插入图片描述调用完成后又调用了build方法返回了一个DefaultSqlSessionFactory对象
    最终返回了一个处理后的SqlSessionFactory对象var5。既然有了sqlSessionFactory对象,那就可以愉快的产生出SqlSession对象了。。最终经过各种磨难各种校验后得出了Sqlsession对象。

    SqlSession sqlSession = build.openSession();

    使用SqlSesion对象的getMapper()方法获取接口信息

     UserDao mapper = sqlSession.getMapper(UserDao.class);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!