mybatis
文章平均质量分 70
高某某。。
这个作者很懒,什么都没留下…
展开
-
mybatis与spring整合过程
上一篇文章已经说了beanDefinition是通过BeanFactoryPostProcessorsr来将我们的mapper的信息注册为beanDefinition,接下来我们看一看spring是如何整合sqlSessionFactory的 1.创建SqlSessionFactoryBean成为bean对象的时候调用他的afterPropertiesSet方法,并且生成sqlSessionFactory: 并且我们如果进入创建sqlSessionFactory的方法中取看的话,会发现他的很多操作就是我们使原创 2022-03-06 17:10:39 · 184 阅读 · 0 评论 -
mybatis自定义拦截器分页查询
我们知道,在我们的sql语句中经常遇到的问题就是分页查询的问题,我们来看一看在原生的mybatis中怎么利用它的接口实现我们的分页查询,第一步我们应该知道在哪去插入分页的语句,我们知道我们的sql相关的执行处理都再一个叫做StatementHandler的类中,所以我们再该类创建以后我们对它里面的sql语句进行改写或者其他的处理即可: 所以我们只需要再StatementHandler的prepare方法中做一个拦截处理即可, 说干就干,我们知道我们的StatementHandler是做了增强处理的,直接原创 2022-02-21 16:27:07 · 1544 阅读 · 0 评论 -
mybatis源码7
我们来看一看当我们的结果集对应的对象被创建好了之后,属性是如何的赋值的: 我们先进入MetaObject对象的创建:我们的反射工厂中还包含了源对象的setget方法 我们看一看两种赋值的方法吧:第一种xml文件中使用resultType: 如果用resultType进入了该方法并进行了处理,但是在进入applyPropertyMappings方法后,直接返回了boolean值然后退出了循环。 接下来我们使用resultMap: 我们可以看到,进入this.applyAutomaticMappi原创 2022-02-19 11:17:39 · 269 阅读 · 0 评论 -
mybatis源码6
接下来我们来看一看我们的StatementHnadler是如何处理我们的sql语句将我们的带了?的sql语句编译成为我们真实需要的sql语句,毕竟我们需要先将sql语句处理成为真实的sql才能向数据库发送请求。 首先第一步,从我们的boundsql中获取,parameterMappings观察它的属性可以知道,它就是我们到底输入的参数的相关信息。 进入设置值的方法过后,我们根据我们传入的参数值是否为空来进入不同的处理中去,我这里不为空,进入第二种。 然后进入位置类型处理器类去寻找我们真实处理的类,相原创 2022-02-16 17:22:00 · 201 阅读 · 0 评论 -
mybatis源码5
接下来我们来看一看我们的生成了代理对象过后,调用我们的方法吗,我们来观察一下,mybatis的代理究竟为我们实现了哪些功能: 我之前说过,我们的mybatis是用的jdk的动态代理,jdk的动态代理去执行方法的时候都是调用我们传入对象的invoke方法,所以我们调用方法的时候直接进入了我们的MapperProxy的invoke方法中去。 该段代码的意思就是,如果我们执行的那个方法所在类的class对象,比如说像我这里,调用的是selectType,它是我在TypeMapper这个接口所定义的方法,所以它原创 2022-02-11 13:48:18 · 543 阅读 · 0 评论 -
mybatis源码4
接下来我们将来看一下如何获得我们的Mapper代理对象。 即我们使用的这个语句: TypeMapper mapper = session.getMapper(TypeMapper.class); 第一步首先调用sqlSession中的getMapper,然后它又去调用config对象中的getMapper,最终config再去调用MapperRegistry中的getMapper,因为我们知道,我们的接口和它的代理对象映射关系是被存储再MapperRegistry中的。 有人可能会问我们再哪里放入的,还原创 2022-02-09 15:24:21 · 303 阅读 · 0 评论 -
mybatis源码3
我们来看一看这一个语句执行了什么: SqlSession session = sqlSessionFactory.openSession(); 看一看我们的事务工厂的内部,其实就只有这几个方法,通过这些方法来创建我们的事务对象。 然后通过我们的方法创建事务,jdbc事务内部的属性是这样的 创建出事务对象过后,我们根据我们呢得到的对象创建出我们的执行器Executor对象,这里有个讲的,可以看一看,它就是帮我们执行sql语句的对象。 https://blog.csdn.net/a1032722788/a原创 2022-02-08 12:57:19 · 87 阅读 · 0 评论 -
mybatis源码2
我们紧接着上次讲的,由于我的mapper里面输入的resource 所以我们直接看它获取到resource属性所作的处理。。 首先获取到resource中的地址,然后获取它的输入流,通过输入流构造XMLMapperBuilder 我们看一看里面有什么: 第一步进入父类的构造方法中 并且把Config对象传如其中,这是很正常的,Config对象包含了很多我们的参数,基本上mybatis大部分对象都调用了它。我们看一看XMLMapperBuilder的父类构造函数 我们看到它首先将Config给自己的私有原创 2022-02-08 11:22:00 · 875 阅读 · 0 评论 -
mybatis源码
首先我们需要了解怎样来使用mybatis读取我们的配置类,在官网中我们可以看到两种创建的方式 第一种:用xml文件。 第二种,不用xml文件: 在第二种创建中我们可以看到它是使用SqlSessionFactoryBuilder()构造器来构造我们的sqlSessionFactorry对象。我们来看一看它的源代码,如果我们是用第一种来创建,我们观察一下 首先进入build方法中掉用它的其他的构造方法, 我们观察第一步它做了什么:进入new XMLConfigBuilder(inputStream, e原创 2022-01-25 19:40:44 · 256 阅读 · 0 评论