Mybatis
Mybatis系列博客
惑边
每一分努力都会在合适的时机得到回报...
展开
-
25-Mybatis和SpringBoot集成原理
文章目录Mybatis和SpringBoot的集成一、MyBatis和SpringBoot二、MybatisAutoConfiguration2.1 属性2.2 配置SqlSessionFactory2.3 配置SqlSessionTemplate2.4 配置MapperFactoryBean三、MybatisProperties四、小结Mybatis和SpringBoot的集成前面介绍了M...原创 2019-11-09 16:33:52 · 824 阅读 · 0 评论 -
24-Mybatis和Spring集成原理
文章目录Mybatis和Spring集成原理一、代码差异1.1 MyBatis1.2 MyBatis和Spring二、主要类2.1 SqlSessionFactoryBean2.1.1 核心属性2.1.2 buildSqlSessionFactory2.1.3 创建时机2.2 MapperFactoryBean2.3 MapperScannerConfigurer2.4 @MapperScan三、...原创 2019-11-09 14:05:12 · 659 阅读 · 0 评论 -
23-Mybatis 核心流程图解
文章目录一、Mybatis 核心流程图解1.1 初始化阶段1.2 代理阶段1.3 数据读取阶段二、参考一、Mybatis 核心流程图解在前面的三篇文章我们按照Mybatis的三大核心流程分析了每个流程的具体工作,本文我们通过流程图的形式展现整个流程,因为流程比较长,还是分为三个图来展示。1.1 初始化阶段数据初始化阶段是读取配置,初始化Configuration对象,获取SqlSe...原创 2019-07-16 12:16:16 · 617 阅读 · 0 评论 -
22-Mybatis 核心流程03-数据读取阶段
文章目录核心流程-数据读取阶段一、核心流程-数据读取阶段二、Executor2.1 功能2.2 实现三、执行流程分析3.1 DefaultSqlSession#selectList3.2 CachingExecutor#query3.3 Executor#query3.4 BaseExecutor#queryFromDatabase3.5 SimpleExecutor#doQuery四、读取阶段数...原创 2019-07-11 14:41:07 · 329 阅读 · 0 评论 -
21-Mybatis 核心流程02-代理阶段
文章目录核心流程-代理阶段一、核心流程-代理阶段1.1 分析1.2 源码入口二、核心类三、源码解析3.1 MapperMethod3.1.1 SqlCommand3.1.2 MethodSignature3.1.3 MapperMethod3.2 MapperProxy3.3 MapperProxyFactory3.4 MapperRegistry四、初始化流程分析4.1 XMLMapperBui...原创 2019-07-11 12:16:17 · 882 阅读 · 0 评论 -
20-Mybatis 核心流程01-初始化阶段
文章目录核心流程-初始化阶段一、核心流程-初始化阶段二、核心类2.1 创建Configuration的三个核心类2.2 其他核心类三、Configuration源码解析3.1 Configuration属性四、解析对应图五、初始化分析5.1 XMLConfigBuilder5.1.1 入口方法build5.1.2 XMLConfigBuilder#parse5.1.3 XMLConfigBuild...原创 2019-06-26 19:17:43 · 428 阅读 · 1 评论 -
19-Mybatis源码分析(四大对象-ResultSetHandler结果集映射)
文章目录四大对象-ResultSetHandler(结果集映射)一、ResultSetHandler二、DefaultResultSetHandler2.1 DefaultResultSetHandler#handleResultSets2.2 DefaultResultSetHandler#handleResultSet2.3 DefaultResultSetHandler#handleRowV...原创 2019-07-08 21:36:30 · 1670 阅读 · 0 评论 -
18-Mybatis源码分析(ParameterHandler参数读取)
文章目录Mybatis参数读取源码分析一、ParameterHandler二、DefaultParameterHandler三、流程调试3.1 SimpleExecutor#doQuery3.2 SimpleExecutor#prepareStatement3.3 PreparedStatementHandler#parameterize3.4 DefaultParameterHandler#se...原创 2019-07-09 22:00:55 · 2108 阅读 · 0 评论 -
17-Mybatis源码分析(StatementHandler数据库访问)
文章目录StatementHandler一、StatementHandler和Statement1.1 StatementHandler接口1.2 Statement接口二、StatementHandler2.1 接口2.2 实现类三、实现类分析3.1 BaseStatementHandler3.2 RoutingStatementHandler3.3 PreparedStatementHandl...原创 2019-07-10 17:54:48 · 264 阅读 · 0 评论 -
16-Mybatis源码和设计模式-7(SqlSession模块与策略模式)
文章目录SqlSession模块与策略模式一、策略模式二、功能三、源码3.1 实现类3.2 DefaultSqlSession源码分析四、SqlSessionFactory4.1 SqlSessionFactory接口4.2 实现类DefaultSqlSessionFactory五、小结六、参考SqlSession模块与策略模式一、策略模式策略模式请参考:03-行为型模式(上)二、功能...原创 2019-07-11 20:10:57 · 572 阅读 · 0 评论 -
15-Mybatis源码和设计模式-6(插件模块和代理模式、责任链模式)
文章目录Mybatis插件一、自定义插件1.1 示例1.2 要点二、插件的配置和解析2.1 配置2.2 解析2.2.1 XMLConfigBuilder#parseConfiguration2.2.2 XMLConfigBuilder#pluginElement三、代理3.1 代理增强3.1.1 Configuration3.1.2 InterceptorChain3.2 Plugin类3.2.1...原创 2019-06-30 17:31:16 · 795 阅读 · 0 评论 -
14-Mybatis源码和设计模式-5(Executor组件与模板模式,装饰器模式)
文章目录Executor组件与模板模式一、Executor组件二、使用方式三、目录结构四、源码解析4.1 Executor接口4.2 BaseExecutor抽象类4.2.1 BaseExecutor#query()4.2.1 BaseExecutor#queryFromDatabase4.3 三种子类4.3.1 SimpleExecutor4.3.2 ReuseExecutor4.3.3 Bat...原创 2019-06-30 10:03:16 · 906 阅读 · 0 评论 -
13-Mybatis源码和设计模式-4(数据源创建和和策略模式)
文章目录数据源创建和和策略模式一、数据源1.1 配置1.2 源码1.2.1 XMLConfigBuilder#environmentsElement1.2.2 XMLConfigBuilder#dataSourceElement二、小结数据源创建和和策略模式一、数据源在10-Mybatis源码和设计模式-1(数据源模块和工厂模式,代理模式)中我们了解了数据源模块有三种类型,POOL,UNP...原创 2019-06-26 23:02:14 · 377 阅读 · 0 评论 -
12-Mybatis源码和设计模式-3(缓存模块和装饰器模式)
文章目录缓存模块和装饰器模式一、缓存模块二、装饰器模式三、目录结构四、源码解析3.1 接口3.2 实现类3.3 装饰器类3.3.1 FifoCache3.3.2 LruCache3.4 小结五、缓存功能解读5.1 实现要点5.2 缓存Key缓存模块和装饰器模式一、缓存模块Mybatis缓存模块的核心功能是提供缓存的读取(基于Map来实现),在核心功能的基础之上添加了很多附加功能,比如FIF...原创 2019-06-25 14:32:13 · 355 阅读 · 0 评论 -
11-Mybatis源码和设计模式-2(日志模块和适配器模式,代理模式)
文章目录Mybatis日志模块和适配器模式、代理模式一、日志模块二、适配器模式三、目录结构四、源码解析4.1 目标接口4.2 适配者4.3 适配器Slf4jImpl4.4 小结五、其他适配器六、工厂LogFactory七、JDBC日志代理增强八、小结Mybatis日志模块和适配器模式、代理模式一、日志模块Mybatis本身并没有实现日志功能,换言之框架本身是不具备打印日志的能力的,但是我们...原创 2019-06-24 22:55:40 · 606 阅读 · 0 评论 -
10-Mybatis源码和设计模式-1(数据源模块和工厂模式,代理模式)
文章目录Mybatis数据源模块和工厂模式一、简介二、工厂模式引入2.1 来源2.2 优点2.3 缺点2.4 借鉴2.5 分类2.5.1 简单工厂模式2.5.1 工厂方法模式2.5.1 抽象工厂模式三、目录结构四、源码解析4.1 pooled4.1.1 PooledDataSource4.1.1.1 获取连接4.1.1.2 归还连接4.1.1.3 获取数据源状态4.1.1.4 pingConnec...原创 2019-06-24 15:37:23 · 924 阅读 · 0 评论 -
04-Mybatis 动态SQL
文章目录动态SQL一、if语句1.1 新增语句1.2 查询语句二、choose + when + otherwise三、where四、set五、trim六、foreach6.1 查询6.2 插入七、bind八、sql九、参考动态SQLMyBatis的强大特性之一是它的动态SQL。使用JDBC或其它类似框架,根据不同条件拼接SQL语句是痛苦的。例如拼接时要确保不能忘记添加必要的空格,还要注意去...原创 2019-06-06 16:16:03 · 262 阅读 · 0 评论 -
03-Mybatis 映射文件
文章目录映射文件一、入参1.1 #和$1.1.1 案例1.1.2 测试代码1.1.3 结论1.2 多个参数1.2.1 Map1.2.2 javaBean1.2.3 注解1.2.4 代码二、出参2.1 ResultType2.2 自动映射和失效2.2.1 别名2.2.2 转换2.2.3 ResultMap三、主键回写3.1 useGeneratedKeys3.2 selectKey四、小结映射文件...原创 2019-06-06 15:57:51 · 160 阅读 · 0 评论 -
02-Mybatis 配置文件
文章目录配置文件一、properties二、settings三、typeAlias四、typeHandlers4.1 转换器4.2 配置文件4.3 Java接口类4.4 mapper映射文件4.5 测试五、plugins六、environments6.1 案例6.2 测试七、mappers八、参考配置文件mybatis框架的核心包括java接口,mapper映射文件mapper.xml,和m...原创 2019-06-06 15:19:47 · 173 阅读 · 0 评论 -
01-Mybatis 入门
文章目录MyBatis入门一、ORM和JDBC对比二、MyBatis和Hibernate对比三、MyBatis三要素四、MyBatis核心类引入五、入门案例5.1 Maven依赖5.2 创建属性文件5.3 创建MyBatis配置文件5.4 创建xml映射文件5.5 测试5.6 优化5.7 完整增删改查5.8 使用代理的方式访问5.8.1 创建Java接口5.8.2 通过Java接口访问数据库5.8...原创 2019-06-06 12:52:27 · 220 阅读 · 0 评论 -
MyBatis使用#和$操作符模拟sql注入
一、接口方法: public interface PlayerDao { List<Player> findByName(@Param("playName") String playName); } Mapper文件1: <select id="findByName" resultType="Player"> ...原创 2019-03-13 17:30:56 · 502 阅读 · 0 评论 -
MyBatis新增数据时自增id的两种写法
MyBatis新增数据时自增id的两种写法接口方法: public interface PlayerDao { int insertOnePlayer(Player player); int insertOnePlayer2(Player player); }方式一、 public void testInsertGenerateId1(...原创 2019-03-13 16:42:31 · 40479 阅读 · 1 评论 -
MyBatis多属性查询的三种方式
接口方法定义 List<Player> findPlayer1(Map<String, Object> queryMap); List<Player> findPlayer3(PlayerQueryBean playerQueryBean); List<Player> findPlayer2(@Param("team") Strin...原创 2019-03-13 15:48:36 · 1079 阅读 · 0 评论