摘要: 1.mybatis事务的配置和使用 mybatis事务有两种使用方式: (a):使用JDBC的事务管理机制:即使用java.Sql.Connection对象完成对事务的提交,回滚和关闭操作。 (b):使用MANAGED的事务管理机制:mybatis本身不会去实现事务管理的相关操作,而是交个外部容器来 阅读全文
posted @ 2018-08-31 13:32 51life 阅读(4941) 评论(0) 推荐(0) 编辑
摘要: 1 二级缓存简介 二级缓存是在多个SqlSession在同一个Mapper文件中共享的缓存,它是Mapper级别的,其作用域是Mapper文件中的namespace,默认是不开启的。看如下图: 1.1 整个流程是这样的(不考虑第三方缓存库): 当开启二级缓存后,在配置文件中配置<setting na 阅读全文
posted @ 2018-08-29 10:42 51life 阅读(6174) 评论(1) 推荐(2) 编辑
摘要: 在mybatis两种开发方式这边文章中,我们提到了Mapper动态代理开发这种方式,现在抛出一个问题:通过sqlSession.getMapper(XXXMapper.class)来获取代理对象的过程是怎样的?生成的代理对象是通过怎样的方式来调用Mapper接口指定的方法的? 我们根据源码来一步步分 阅读全文
posted @ 2018-08-27 16:50 51life 阅读(832) 评论(0) 推荐(1) 编辑
摘要: mybatis缓存分为一级缓存,二级缓存和自定义缓存。本文重点讲解一级缓存 一:前言 在介绍缓存之前,先了解下mybatis的几个核心概念: * SqlSession:代表和数据库的一次会话,向用户提供了操作数据库的方法 * MapperedStatement:代表要往数据库发送的要执行的指令,可以 阅读全文
posted @ 2018-08-24 16:06 51life 阅读(5193) 评论(0) 推荐(3) 编辑
摘要: 这篇文章中,我们将讲解配置文件中 properties,typeAliases,settings和environments这些节点的解析过程。 一 properties的解析 二 settings的解析 先看下settings的配置,下面只是settings配置中的一部分: 源码部分: 二 type 阅读全文
posted @ 2018-08-21 16:37 51life 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 在进行源码分析前,先写一个使用mybatis进行开发的demo,方便我们后面进行分析。 一 关于mybatis的demo pom.xml文件 配置文件spring-ibatis: 数据库连接信息 db.properties 创建一张Goods商品表 创建Goods实体类 创建GoodsDao接口 M 阅读全文
posted @ 2018-08-20 15:58 51life 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 本文首先讲解从JDBC到mybatis的演变过程,然后是使用mybatis进行开发的两种方式。 一 JDBC的使用及其优化 1.使用JDBC进行数据库操作 加载JDBC驱动; 建立并获取数据库连接; 创建 JDBC Statements 对象; 设置SQL语句的传入参数; 执行SQL语句并获得查询结 阅读全文
posted @ 2018-08-17 17:34 51life 阅读(2537) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章 spring AOP源码分析(二)中,我们已经知道如何生成一个代理对象了,那么当代理对象调用代理方法时,增强行为也就是拦截器是如何发挥作用的呢?接下来我们将介绍JDK动态代理和cglib这两种方式下,拦截器调用的实现。 一 JDK动态代理拦截器调用的实现: 我们知道,在生成代理对象时, 阅读全文
posted @ 2018-08-15 17:24 51life 阅读(1192) 评论(0) 推荐(0) 编辑
摘要: HashSet是基于HashMap来实现的,因为它的底层是通过HashMap来保存元素的。 1.属性 2.构造器 3.方法 3.1 boolean add(E e):如果此 set 中尚未包含指定元素,则添加指定元素 3.2 boolean remove(Object o):如果指定元素存在于此 s 阅读全文
posted @ 2018-08-08 16:04 51life 阅读(152) 评论(0) 推荐(0) 编辑
摘要: TreeMap是基于红黑树来实现的,它是根据键的自然顺序,或者创建时提供的comparator来排序的。 1.属性 2.构造器 3.方法 3.1:V put(K key,V value):将指定值与此映射中的指定键进行关联。如果该映射以前包含此键的映射关系,那么将替换旧值 插入操作可以分为两步:一是 阅读全文
posted @ 2018-07-27 14:06 51life 阅读(178) 评论(0) 推荐(0) 编辑