![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
jadebai
Java成长道路的记录
展开
-
Mybatis学习系列(五):SqlSession
前面我们讲完了SqlSessionFactory的初始化,这里我们主要看一下如何通过SqlSessionFactory获取SqlSession对象的,在获取SqlSession的同时,又做了哪些操作在前面我们了解到最终获取的SqlSessionFactory其实是DefaultSqlSessionFactory对象,我们看一下这个对象的方法:这里可以看到,重载了获取session的方法,一...原创 2019-08-24 15:36:33 · 263 阅读 · 1 评论 -
Mybatis学习系列(十二):PageHelper分页插件
由于mybatis原生的分页是在内存里面进行的,导致效率很低,但是我们在生产项目中有很多的分页需求,这个时候PageHelper分页插件就诞生了。PageHelper主要是通过插件拦截链实现的。我们知道在创建StatementHandler 的时候,我们包装了interceptorChain链public StatementHandler newStatementHandler(Exec...原创 2019-08-27 20:58:26 · 706 阅读 · 0 评论 -
Mybatis学习系列(十一):RowBounds内存分页
Mybatis默认的分页是通过RowBounds参数来实现的,并且是在内存里面进行的,我们看一下整体的流程在获取MapperMethod的时候我们发现,通过方法的入参是否有RowBounds参数来判断是否分页this.rowBoundsIndex = getUniqueParamIndex(method, RowBounds.class);private Integer getUn...原创 2019-08-27 19:13:17 · 2966 阅读 · 0 评论 -
Mybatis学习系列(十):缓存
mybatis的缓存主要是分为两种:一级缓存和二级缓存:一级缓存:一直开启,不能关闭,默认是session级别的,但是可以设置成statement级别。session级别:表现为---MyBatis执行SQL语句之后,这条语句就是被缓存,以后再执行这条语句的时候,会直接从缓存中拿结果,而不是再次执行SQL。但是在两个相同的查询之间,如果当前数据被修改,会进行两次查询。作用域是SqlSe...原创 2019-08-26 21:24:26 · 210 阅读 · 0 评论 -
Mybatis学习系列(九):select的执行
我们先看一下MapperMethod中有哪些select查询,都是如何实现的case SELECT: //1.返回void if (method.returnsVoid() && method.hasResultHandler()) { executeWithResultHandler(sqlSession, args);...原创 2019-08-26 20:38:29 · 1156 阅读 · 0 评论 -
Mybatis学习系列(八):Insert,update,delete的执行
由于MapperMethod中Insert,update,delete这三个的执行方式是一样的,我们统一看一下case INSERT: { Object param = method.convertArgsToSqlCommandParam(args); result = rowCountResult(sqlSession.insert(command.getNa...原创 2019-08-26 19:35:28 · 878 阅读 · 0 评论 -
Mybatis学习系列(三):源码解析—解析mybatis-config.xml
在初始化配置的过程中我们看到这样一段代码:解析mybatis-config.xml里面的配置信息,初始化configurationif (this.configLocation != null) { //根据配置文件生成XMLConfigBuilder xmlConfigBuilder = new XMLConfigBuilder(this.configLocatio...原创 2019-08-22 19:56:41 · 241 阅读 · 0 评论 -
Mybatis学习系列(二):源码解析—SqlsessionFactory
在使用mybatis的第一步其实就是加载配置信息,生成SqlSessionFactory初始化Configuration对象。final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); se...原创 2019-08-21 21:27:55 · 485 阅读 · 0 评论 -
Mybatis学习系列(一):开篇介绍
MyBatis 是Apache的一个Java开源项目,是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编码在Java类中。特点:1.Mybatis通过参数映射方式,可以将参数灵活的配置在SQL语句中的配置文件中,避免在Java类中配置参数(JDBC)2.Mybatis通过输出映射机制...原创 2019-08-21 20:32:40 · 185 阅读 · 0 评论 -
Mybatis学习系列(四):源码解析—解析mapper
上一篇主要是介绍了mybatis-config.xml配置文件的解析,里面只是简单的列了一下mapper的解析,由于这个是比较核心和重要的,这里我们将进行详细的解析:private void mapperElement(XNode parent) throws Exception { if (parent != null) { for (XNode child : par...原创 2019-08-23 21:34:24 · 174 阅读 · 0 评论 -
Mybatis学习系列(七):Mapper执行
第六篇文章我们拿到了Mapper的一个代理对象,我们知道代理对象的执行其实是交给了InvocationHandler来处理的,也就是我们的MapperProxy对象。我们看一下invoke方法:public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { try { ...原创 2019-08-24 22:17:46 · 832 阅读 · 0 评论 -
Mybatis学习系列(六):获取对应的Mapper
第五篇文章中,我们获取到了SqlSession对象,然后我们在执行的时候是通过获取Mapper,然后通过执行mapper的方法来获取我们需要的数据,这篇我们就看一下这个通过SqlSession获取Mapper的过程。 DefaultSqlSession public <T> T getMapper(Class<T> type) { //这里调用的是con...原创 2019-08-24 16:43:31 · 1524 阅读 · 0 评论 -
Mybatis学习系列(十三):Mybatis整合spring
Mybatis整合spring主要是通过mybatis-spring这个jar包来处理的,主要有两个重要的过程: 1.SqlSessionFactory,SqlSession的初始化 2.mapper的解析和生成代理对象1.SqlSessionFactory,SqlSession的初始化,首先我们看一下项目中的使用配置//这里通过SqlSessio...原创 2019-08-28 19:57:03 · 229 阅读 · 0 评论