# 为啥写这篇文章呢
就是为了帮助那些像我一样比较笨但是一直努力的人,从一个笨人的角度去写一篇通俗易懂的文章打通spring和mysql之间的关系,另外mybatis作为承上启下的节点其重要性可想而知。
谈整合之前你真的掌握了mybatis么
首先上一段mybatis独立使用的代码,关注下里面的重要对象
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list1 = sqlSession.selectList("mappers.userMapper.userSelect","name11");
System.out.println(list1.toString());
}
一段简单的使用代码,里面可是大有乾坤,我先整理下主要的对象,并分别对这些对象进行描述
- Resources: 资源加载器,基本上每个主要框架都有这个东东,spring也有,就是用来加载配置文件的,或者说各种外部文件。她的流程很固定,把xml文件以流的方式打开,最终转为久违的xmldocument对象,然后就可以通过该对象以xml节点方式读入xml中的配置,这也是构建configuration对象的开始。
- SqlSessionFactoryBuilder: builder? 明显使用构建者模式了,可以搜下什么情况下使用构建者模式,总而言之就是构建复杂对象的时候需要借助外力,可能有不止一个builder来创建一个复杂对象,向我们在构建SqlSessionFactory的过程中就用到了至少两个构建器SqlSessionFactoryBuilder和XMLConfigBuilder,构建器的另一个特点就是一般都为局部变量,因为工具的生命周期就是用,用完就要没。
- 在代码中没有体现出来的一个mybatis的重要对象,我说出来大家都会很熟悉,但是其复杂度非常高,甚至有点违背了单一职责的原则,就是Configuration,该类包含了很多很多的对象,基本上涵盖了mybatis的所有对象,该对象是SqlSessionFactoryBuilder构建SqlSessionFactory 的过程中通过反射创建,并通过读入mybaits-config文件进行构建的,构建的代码很长,就不在这里一一说明,毕竟也有可能说不明白。
- SqlSessionFactory 该类主要就是跟他的名字一样,就是sqlsession的工厂,有工厂至少说明两个事,生产的产品不简单,需要点工艺,另一个事就是他确实不简单。他里面定义了创建sqlsession的18中姿势,还有个重头戏,拿到configuration,我认为在mybatis中拿到了configuration等于拿到了全世界。
- sqlSession 是具体干活的了,里面定义了update select 操作,可是她也不是真干活的,他也有小弟statmenthandler,人家才是真干活的。我们可以通过sqlSession.selectList(“mappers.userMapper.userSelect”,“name11”);的进行查询操作,当然也可以通过定义mapper的方式达到同样的目的,mapper的方式是如何查询的在下一篇文章中进行说明。
今天就说这么多,主要就是撸一撸整体概念,让大家有一个粗鲁的概括的了解,接下来会对每个对象的处理过程进行深入的说明。