learn.lianglianglee.com/专栏/深入剖析 MyBatis 核心原理-完/index.html
2022-08-14 03:40:33 +08:00

194 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>note-submit</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content"
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><!--add content-->
<h1>深入剖析 MyBatis 核心原理-完</h1>
<ul>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\00 开篇词 领略 MyBatis 设计思维,突破持久化技术瓶颈.md.html'>00 开篇词 领略 MyBatis 设计思维,突破持久化技术瓶颈</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\01 常见持久层框架赏析,到底是什么让你选择 MyBatis.md.html'>01 常见持久层框架赏析,到底是什么让你选择 MyBatis</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\02 订单系统持久层示例分析20 分钟带你快速上手 MyBatis.md.html'>02 订单系统持久层示例分析20 分钟带你快速上手 MyBatis</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\03 MyBatis 源码环境搭建及整体架构解析.md.html'>03 MyBatis 源码环境搭建及整体架构解析</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\04 MyBatis 反射工具箱:带你领略不一样的反射设计思路.md.html'>04 MyBatis 反射工具箱:带你领略不一样的反射设计思路</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\05 数据库类型体系与 Java 类型体系之间的“爱恨情仇”.md.html'>05 数据库类型体系与 Java 类型体系之间的“爱恨情仇”</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\06 日志框架千千万MyBatis 都能兼容的秘密是什么?.md.html'>06 日志框架千千万MyBatis 都能兼容的秘密是什么?</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\07 深入数据源和事务,把握持久化框架的两个关键命脉.md.html'>07 深入数据源和事务,把握持久化框架的两个关键命脉</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\08 Mapper 文件与 Java 接口的优雅映射之道.md.html'>08 Mapper 文件与 Java 接口的优雅映射之道</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\09 基于 MyBatis 缓存分析装饰器模式的最佳实践.md.html'>09 基于 MyBatis 缓存分析装饰器模式的最佳实践</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\10 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(上).md.html'>10 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(上)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\11 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(下).md.html'>11 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(下)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\12 深入分析动态 SQL 语句解析全流程(上).md.html'>12 深入分析动态 SQL 语句解析全流程(上)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\13 深入分析动态 SQL 语句解析全流程(下).md.html'>13 深入分析动态 SQL 语句解析全流程(下)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\14 探究 MyBatis 结果集映射机制背后的秘密(上).md.html'>14 探究 MyBatis 结果集映射机制背后的秘密(上)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\15 探究 MyBatis 结果集映射机制背后的秘密(下).md.html'>15 探究 MyBatis 结果集映射机制背后的秘密(下)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\16 StatementHandler参数绑定、SQL 执行和结果映射的奠基者.md.html'>16 StatementHandler参数绑定、SQL 执行和结果映射的奠基者</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\17 Executor 才是执行 SQL 语句的幕后推手(上).md.html'>17 Executor 才是执行 SQL 语句的幕后推手(上)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\18 Executor 才是执行 SQL 语句的幕后推手(下).md.html'>18 Executor 才是执行 SQL 语句的幕后推手(下)</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\19 深入 MyBatis 内核与业务逻辑的桥梁——接口层.md.html'>19 深入 MyBatis 内核与业务逻辑的桥梁——接口层</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\20 插件体系让 MyBatis 世界更加精彩.md.html'>20 插件体系让 MyBatis 世界更加精彩</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\21 深挖 MyBatis 与 Spring 集成底层原理.md.html'>21 深挖 MyBatis 与 Spring 集成底层原理</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\22 基于 MyBatis 的衍生框架一览.md.html'>22 基于 MyBatis 的衍生框架一览</a></li>
<li><a href = '\专栏\深入剖析 MyBatis 核心原理-完\23 结束语 会使用只能默默“搬砖”,懂原理才能快速晋升.md.html'>23 结束语 会使用只能默默“搬砖”,懂原理才能快速晋升</a></li>
</ul>
</div>
</div>
<div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>