随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
随笔分类 - MyBatis
MyBatis框架
MyBatis(十一)扩展:自定义类型处理器
摘要:一、TypeHandler TypeHandler 在MyBatis中进行数据库类型和JavaBean类型的映射。 TypeHandler<T> 接口: 该接口中声明了四个抽象方法,说明如下: //将parameter对象转换为字符串存入到 ps 对象的i位置 public abstract voi
阅读全文
MyBatis(十一)扩展:存储过程
摘要:一、存储过程 实际开发中,我们通常也会写一些存储过程,MyBatis也支持对存储过程的调用。 一个最简单的存储过程: delimiter delimiter ; 存储过程的调用: ① se
阅读全文
MyBatis(十一)扩展:批量操作
摘要:一、批量操作 默认的 openSession() 方法没有参数,它会创建有如下特性的 会开启一个事务(也就是不自动提交) 连接对象会从由活动环境配置的数据源实例得到 事务隔离级别将会使用驱动或数据源的默认设置 预处理语句不会被复用,也不会批量处理更新 openSession 方法的 Executor
阅读全文
MyBatis(十一)扩展:分页插件PageHelper
摘要:一、PageHelper 插件介绍 PageHelper是MyBatis中非常方便的第三方分页插件。 官方文档:https://github.com/pagehelper/MybatisPageHelper/blob/master/README_zh.md 我们可以对照官方文档的说明,快速的使用插件
阅读全文
MyBatis(十)插件开发 之 插件运行原理
摘要:一、插件开发 MyBatis在四大对象的创建过程中,都会有插件进行介入。 插件可以利用动态代理机制一层层的包装目标对象,而实现在目标对象执行目标方法之前进行拦截的效果。 MyBatis 允许在已映射语句执行过程中的某一点进行拦截调用。 默认情况下, MyBatis 允许使用插件来拦截的方法调用包括:
阅读全文
MyBatis(十)插件开发 之 开发自定义插件
摘要:一、动态改变SQL运行的参数 我们可以在目标方法放行前后,做非常多的事情,以到达动态修改 MyBatis 的运行流程。 在上面的插件开发基础上,当我们测试要查询id为1号的员工时,实际从数据库查询3号员工。 插件的实现: /** * 完成插件签名 * 告诉MyBatis当前插件用用来拦截哪个对象的哪
阅读全文
MyBatis(九)工作原理 之 MyBatis原理总结
摘要:MyBatis 简单案例: @Test public void test() throws IOException { //1、获取 sqlSessionFactory SqlSessionFactory sqlSessionFactory = getsqlSessionFactory(); //2
阅读全文
MyBatis(九)工作原理 之 查询实现流程
摘要:查询流程 查询流程总结 说明: StatementHandler:处理sql语句预编译,设置参数等相关工作; ParameterHandler:设置预编译参数用的 ResultHandler:处理结果集 TypeHandler:在整个过程中,进行数据库类型和javaBean类型的映射
阅读全文
MyBatis(九)工作原理 之 getMapper 获取接口的代理对象
摘要:获取代理对象 getMapper 返回接口的代理对象(包含了 SqlSession 对象)
阅读全文
MyBatis(九)工作原理 之 openSession 获取 SqlSession对象
摘要:获取 SqlSession 对象 返回 SqlSession 的实现类 DefaultSqlSession 对象,他里面包含了 Executor 和 Configuration;Executor 会在这一步被创建。
阅读全文
MyBatis(九)工作原理 之 SQLSessionFactory 的初始化
摘要:根据配置文件创建 SQLSessionFactory Configuration 封装了所有配置文件的详细信息。 总结:把配置文件的信息解析并保存在 Configuration 对象中,返回包含了 Configuration 的 DefaultSqlSession 对象。
阅读全文
MyBatis(九)工作原理 之 框架分层架构
摘要:MyBatis 框架分层架构 MyBatis 简单案例: public SqlSessionFactory getsqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream
阅读全文
MyBatis(八)MyBatis-逆向工程
摘要:一、逆向工程简介 MyBatis Generator:简称 MBG,是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及 bean 类。 支持基本的增删改查,以及 QBC 风格的查询,但是表连接、存储过程等这些复杂 sql 的定义需要手工编写。 官
阅读全文
MyBatis(七)SSM 整合:MyBatis-Spring-SpringMVC 整合
摘要:一、前提 1、查看不同 MyBatis 版本整合 Spring 时使用的适配包 http://www.mybatis.org/spring/ 2、下载整合适配包 https://github.com/mybatis/spring/releases 3、官方整合示例 jpetstore https:/
阅读全文
MyBatis(六)缓存机制 之 整合第三方缓存
摘要:一、整合第三方缓存 1、为了提高扩展性。MyBatis 定义了缓存接口 Cache。可以通过实现 Cache 接口来自定义二级缓存;(在二级缓存的基础上来设置,只是需要指定二级缓存的技术) 2、EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认
阅读全文
MyBatis(六)缓存机制 之 缓存原理图
摘要:缓存原理图: 执行流程:当执行一条查询SQL时, 流程为从二级缓存中进行查询,如果没有查到进入一级缓存中查询,最后执行 JDBC 查询。
阅读全文
MyBatis(六)缓存机制 之 缓存的相关属性设置
摘要:缓存相关设置 1、全局 setting 的 cacheEnable: cacheEnable:是否开启二级缓存 <!-- 是否开启二级缓存 --> <setting name="cacheEnabled" value="true"/> 取值: true:开启二级缓存 false:关闭缓存(关闭二级缓
阅读全文
MyBatis(六)缓存机制 之 二级缓存
摘要:一、二级缓存简介 1、简介 (1)二级缓存(second level cache),全局作用域缓存; (2)二级缓存默认不开启,需要手动配置; (3)MyBatis 提供二级缓存的接口以及实现,缓存实现要求 POJO 实现 Serializable 接口; (4)二级缓存在 SqlSession 关
阅读全文