PageSourceSearch

http://ibeetl.com/assets/index.html-4DW4vB2e.js

js ibeetl.com collected 2026-09-25 20:06:10 UTC 86,308 bytes, 167 lines download raw bytes

1import{_ as i,c as a,b as n,o as l}from"./app-B8MQJI6s.js";const e="/assets/codecontroller-JeGLXOWC.png",h={};function t(k,s){return l(),a("div",null,s[0]||(s[0]=[n(`<p>你可以先快速阅读本章,然后从 https://gitee.com/xiandafu/springboot3-beetl-beetlsql-example 中找到Spring Boot的例子,包括多库,多租户例子</p><p>,也可以从单元测试中找到Spring Boot例子 https://gitee.com/xiandafu/beetlsql/tree/master/sql-integration/sql-springboot-starter/src/test/java/org/beetl/sql/springboot</p><blockquote><p>关于Spring Boot 多库,多租户等复杂应用,在BeetlSQL指南的后面章节介绍</p></blockquote><h2 id="环境准备" tabindex="-1"><a class="header-anchor" href="#环境准备"><span>环境准备</span></a></h2><p>项目演示使用maven工程,新建一个Maven工程,直接引用如下库<code>sql-springboot-starter</code></p><div class="language-xml line-numbers-mode" data-ext="xml" data-title="xml"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
2<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">com.ibeetl</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
3<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sql-springboot-starter</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
4<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">\${version}</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
5<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如果使用的是Spring Boot4,则需要改成<code>sql-springboot4-starter</code></p><div class="language-xml line-numbers-mode" data-ext="xml" data-title="xml"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
6<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">com.ibeetl</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
7<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sql-springboot4-starter</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
8<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">\${version}</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
9<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后再引入数据库驱动,本章使用H2数据库作为例子,作为快速开始,避免安装数据库服务器,你也可以使用任意其他数据库</p><div class="language-xml line-numbers-mode" data-ext="xml" data-title="xml"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
10<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">com.h2database</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
11<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">h2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
12<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">  &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">1.4.200</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
13<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>引入数据库连接池HikariCP</p><div class="language-xml line-numbers-mode" data-ext="xml" data-title="xml"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
14<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">      &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">com.zaxxer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">groupId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
15<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">      &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">HikariCP</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">artifactId</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
16<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">      &lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">3.3.1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">version</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span>
17<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;/</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">dependency</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>最后,需要准备一个sql脚本,以初始化H2数据库。保存如下sql到resources/db/schema.sql</p><div class="language-sql line-numbers-mode" data-ext="sql" data-title="sql"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">
17DROP</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> TABLE</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> IF</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> EXISTS</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">;</span></span>
18<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">CREATE</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> TABLE</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> \`</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">sys_user</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">\` (</span></span>
19<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">  \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">id</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> int</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">11</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">) </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NOT NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> AUTO_INCREMENT,</span></span>
20<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">  \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">name</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> varchar</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">255</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">) </span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">DEFAULT</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">,</span></span>
21<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">  \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">department_id</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> int</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">11</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">) </span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">DEFAULT</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">,</span></span>
22<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">  \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">create_time</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> datetime</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> DEFAULT</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">,</span></span>
23<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">  PRIMARY KEY</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">id</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">)</span></span>
24<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">) ;</span></span>
25<span class="line"></span>
26<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">BEGIN</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">;</span></span>
27<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">lijz</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
28<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">2</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">lucy</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
29<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">3</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">bear</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">2</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
30<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">4</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">mike</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
31<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">5</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">lisan</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
32<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">6</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">xb</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
33<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">7</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">duanwu</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">2</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
34<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">8</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">fenh</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
35<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">9</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">lj</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">2</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
36<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">gshen</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
37<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">INSERT INTO</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> \`</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">\`</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> VALUES</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> (</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">11</span><span style="--shiki-light:#
37393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">lihui</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">, </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">NULL</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">);</span></span>
38<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">COMMIT</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>这个脚本也适合mysql执行</p></blockquote><h2 id="环境搭建" tabindex="-1"><a class="header-anchor" href="#环境搭建"><span>环境搭建</span></a></h2><p>为了方便快速演示,下创建一个java类SimpleApplication,如下</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">package</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> org</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">beetl</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sql</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">springboot</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">simple</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
39<span class="line"></span>
40<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">import</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> org</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">springframework</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">boot</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">SpringApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
41<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">import</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> org</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">springframework</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">boot</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">autoconfigure</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">SpringBootApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
42<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">
42import</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> org</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">springframework</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">context</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">annotation</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">PropertySource</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
43<span class="line"></span>
44<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">PropertySource</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">value</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
45<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">        &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">classpath:application-simple.properties</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span>
46<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">},</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> encoding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">utf-8</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
47<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">SpringBootApplication</span></span>
48<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SimpleApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
49<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> main</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">String</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> args</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
50<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        SpringApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">run</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">SimpleApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">class</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> args</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
51<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
52<span class="line"></span>
53<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>application-simple.properties 是springboot的配置文件(参考源码<code>BeetlSqlConfig</code>了解配置项)</p><div class="language-properties line-numbers-mode" data-ext="properties" data-title="properties"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">spring.datasource.url</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">jdbc:h2:mem:dbtest</span><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">;DB_CLOSE_ON_EXIT=FALSE</span></span>
54<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">spring.datasource.username</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sa</span></span>
55<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">spring.datasource.password</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span></span>
56<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">spring.datasource.driver-class-name</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">org.h2.Driver</span></span>
57<span class="line"></span>
58<span class="line"></span>
59<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.sqlManagers</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sqlManager1 </span><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 只有一个sqlmanager</span></span>
60<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">#配置sqlMananager1数据源</span></span>
61<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.sqlManager1.ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ds1 </span></span>
62<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">#自动注入mapper类</span></span>
63<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.sqlManager1.basePackage</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">org.beetl.sql.springboot.simple</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如下是yaml配置方式,配置了俩个sqlManager,且扫描org.beetl.sql.springboot.simple以Dao结尾的Mapper类</p><div class="language-yml line-numbers-mode" data-ext="yml" data-title="yml"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">beetlsql</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span></span>
64<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">  sqlManagers</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> sqlManager1,sqlManager2</span></span>
65<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">  sqlManager1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span></span>
66<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">    ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> dataSource</span></span>
67<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">    basePackage</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> org.beetl.sql.springboot.simple</span></span>
68<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">    daoSuffix</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> Dao</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Spring配置需要配置如下Bean</p><ul><li>datasource,这里使用H2库,这个是在<code>SimpleDataSourceConfig</code> 类里配置的数据源,命名为ds1</li><li>beetlsql 配置一个名为sqlManager1的SQLManager实例,其后的配置<code>beetlsql.sqlManager1.ds</code> 配置了关联的数据源ds1</li></ul><p>​ 并配置了mapper的包名是org.beetl.sql.springboot.simple,BeetlSQL将会扫描其下的所有的类,以Mapper结尾的接口,并为其自动生成代理类,注册为Spring的Bean</p><p>SimpleDataSourceConfig定义如下,会配置一个叫ds1的数据源</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"></span>
69<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Configuration</span></span>
70<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SimpleDataSourceConfig</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
71<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Autowired</span></span>
72<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">    ApplicationContext</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ctx</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
73<span class="line"></span>
74<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Primary</span></span>
75<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Bean</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">name</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">ds1</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
76<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> DataSource </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">datasource</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Environment </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">
76env</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
77<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">        HikariDataSource</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> HikariDataSource</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span>
78<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">setJdbcUrl</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">env</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getProperty</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">spring.datasource.url</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span>
79<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">setUsername</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">env</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getProperty</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">spring.datasource.username</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span>
80<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">setPassword</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">env</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getProperty</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">spring.datasource.password</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span>
81<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">setDriverClassName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">env</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getProperty</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">spring.datasource.driver-class-name</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span>
82<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">        return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ds</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
83<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
84<span class="line"></span>
85<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Bean</span></span>
86<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SQLManagerCustomize </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">mySQLManagerCustomize</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span>
87<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">        return</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> SQLManagerCustomize</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span>
88<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">            @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">
88Override</span></span>
89<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">            public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> customize</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">sqlMangerName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SQLManager </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">manager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
90<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">            	//初始化sql,这里也可以对sqlManager进行修改</span></span>
91<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">				       DBInitHelper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">executeSqlScript</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">manager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">db/schema.sql</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
92<span class="line"></span>
93<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">            }</span></span>
94<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">        };</span></span>
95<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
96<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQLManagerCustomize类可以在配置的基础上,定制SQLManager,这里不做任何修改,仅仅调用初始化数据库,以方便测试</p><p>有了以上准备,现在可以编写一个单元测试</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RunWith</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">SpringRunner</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">class</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
97<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">SpringBootTest</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">
97classes</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> SimpleApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">class</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
98<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Transactional</span></span>
99<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SimpleTest</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
100<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Autowired</span></span>
101<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">    SQLManager</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> sqlManager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
102<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Autowired</span></span>
103<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">    SimpleUserInfoMapper</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> userInfoMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
104<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Test</span></span>
105<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> test</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span>
106<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        sqlManager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">single</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">UserInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">class</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
107<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        userInfoMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">single</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
108<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
109<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SimpleUserInfoMapper 是一个BeetlSQL3的Mapper,定义如下</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> interface</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SimpleUserInfoMapper</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> extends</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> BaseMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">UserInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
110<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>UserInfo定义如下</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Table</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">name</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">sys_user</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
111<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Data</span></span>
112<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> UserInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
113<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">AssignID</span></span>
114<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    private</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> id</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
115<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    private</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> String</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> name</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
116<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>UserService是一个Spring的Service,简单的调用<code>userMapper.insert</code></p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Service</span></span>
117<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Transactional</span></span>
118<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> UserService</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
119<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Autowired</span></span>
120<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">    UserMapper</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> userMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
121<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> addUser</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">UserInfo </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">userInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span>
122<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        userMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">insert</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">userInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
123<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
124<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>UserMapper是一个BeetlSQL3的Mapper,我们使用BaseMapper提供的内置insert方法操作</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"></span>
125<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> interface</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> UserMapper</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> extends</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> BaseMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">UserInfo</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
126<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="完整配置" tabindex="-1"><a class="header-anchor" href="#完整配置"><span>完整配置</span></a></h2><p>完整配置通过<code>BeetlSqlConfig</code>解析,因此可以参考这个类了解如何配置</p><div class="language- line-numbers-mode" data-ext="" data-title=""><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>beetlsql=xxx1,xxx2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>多个sqlManager用逗号分开,然后可以一次配置<code>beetlsql.xxx1.配置项</code>的配置风格来配置</p><div class="language-properties line-numbers-mode" data-ext="properties" data-title="properties"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">#2.x模式是Dao,3.x改成Mapper</span></span>
127<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.daoSuffix</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Dao  </span></span>
128<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">#2.x默认是DefaultNameConversion,3.x改成UnderlinedNameConversion </span></span>
129<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.nameConversion</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">org.beetl.sql.core.UnderlinedNameConversion </span></span>
130<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.dbStyle</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">org.beetl.sql.core.db.MySqlStyle</span></span>
131<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.basePackage</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">com.compamny.xxxx</span></span>
132<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.dev</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">true</span></span>
133<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.sqlPath</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">sql</span></span>
134<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql.xxx1.sqlFileCharset</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">utf-8</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如果有多个sqlManager,你可以配置默认的,使用<code>_default</code></p><div class="language-properties line-numbers-mode" data-ext="properties" data-title="properties"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">beetlsql._default.nameConversion</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">org.beetl.sql.core.UnderlinedNameConversion</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-rese
134t:line-number 0;"><div class="line-number"></div></div></div><h2 id="swagger-代码生成" tabindex="-1"><a class="header-anchor" href="#swagger-代码生成"><span>Swagger 代码生成</span></a></h2><p>内置了<code>org.beetl.sql.starter.CodeGenController</code>,一个Rest 接口,用户可以导入此Controller 来为自己系统提供代码生成API</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Bean</span></span>
135<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> CodeGenController </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">codeGenController</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
136<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">  return</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> CodeGenController</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span>
137<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><img src="`+e+`" alt=""></p><p>目前能根据表名生成Entity,Mapper,SQL文件,以及数据库的markdown格式文档,参考示例</p><p>https://gitee.com/xiandafu/beetlsql/tree/master/sql-integration/sql-springboot-starter/src/test/java/org/beetl/sql/springboot/swagger</p><blockquote><p>注意,如果系统包含了多个SQLManager,则不能使用CodeGenController</p></blockquote><blockquote><p>你可以直接在工程里写个Main方法,按照《代码生成》章节那样生成代码和文档</p></blockquote><h2 id="sqlmanagerlifecycle" tabindex="-1"><a class="header-anchor" href="#sqlmanagerlifecycle"><span>SQLManagerLifeCycle</span></a></h2><p>在使用Spring Boot项目,如果需要进一步定制SQLManager,而配置文件不支持,可以使用SQLManagerCustomize Bean 或者 SQLManagerLifeCycle Bean <strong>来实现</strong>,SQLManagerCustomize定义如下</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> interface</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SQLManagerCustomize</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> extends</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> SQLManagerLifeCycle</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
138<span class="line"></span>
139<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">	 void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> customize</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">sqlManagerName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SQLManager </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">manager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
140<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQLManagerLifeCycle则功能跟强大,还包含了<code>customizeBuild</code> 用于在SQLmanager初始化前的定制,以及<code>beforeMapper</code> 用来定制Mapper类</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">/**</span></span>
141<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> * sqlManager 初始化完毕后的回调,用于进一步通过代码定制sqlmanager</span></span>
142<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> * 此方法调用后,将会进一步初始化bean所有Mapper</span></span>
143<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> */</span></span>
144<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> interface</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> SQLManagerLifeCycle</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
145<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	/**</span></span>
146<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * 实例化SQLManager之前,调整Builder</span></span>
147<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> sqlMangerName</span></span>
148<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> builder</span></span>
149<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 */</span></span>
150<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">	default</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> customizeBuild</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">sqlMangerName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">SQLManagerBuilder </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">builder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){}</span></span>
151<span class="line"></span>
152<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	/**</span></span>
153<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * 创建sqlmanager后,在初始化Mapper Bean之前,比如初始化数据库等</span></span>
154<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> sqlManagerName</span></span>
155<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> manager</span></span>
156<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 */</span></span>
157<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">	void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> customize</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">sqlManagerName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
157 ,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SQLManager </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">manager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
158<span class="line"></span>
159<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	/**</span></span>
160<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * 准备初始化一个mapper之前,可以收集mapper打印,或者预加载mapper里sql模板</span></span>
161<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> sqlManagerName</span></span>
162<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> manager</span></span>
163<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 * </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">@param</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> mapperClass</span></span>
164<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">	 */</span></span>
165<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">	default</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Class </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">beforeMapper</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">sqlManagerName</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SQLManager </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">manager</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Class </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">mapperClass</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">  mapperClass</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;}</span></span>
166<span class="line"></span>
167<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,58)]))}const d=i(h,[["render",t],["__file","index.html.vue"]]),r=JSON.parse('{"path":"/notes/beetlsql/beetlsqlspringbootquickstart/","title":"SpringBoot 快速开始","lang":"en-US","frontmatter":{"title":"SpringBoot 快速开始","createTime":"1984/01/24 16:00:00","permalink":"/notes/beetlsql/beetlsqlspringbootquickstart/","description":"你可以先快速阅读本章,然后从 https://gitee.com/xiandafu/springboot3-beetl-beetlsql-example 中找到Spring Boot的例子,包括多库,多租户例子 ,也可以从单元测试中找到Spring Boot例子 https://gitee.com/xiandafu/beetlsql/tree/mast...","head":[["meta",{"property":"og:url","content":"http://ibeetl.com/notes/beetlsql/beetlsqlspringbootquickstart/"}],["meta",{"property":"og:site_name","content":"闲大赋"}],["meta",{"property":"og:title","content":"SpringBoot 快速开始"}],["meta",{"property":"og:description","content":"你可以先快速阅读本章,然后从 https://gitee.com/xiandafu/springboot3-beetl-beetlsql-example 中找到Spring Boot的例子,包括多库,多租户例子 ,也可以从单元测试中找到Spring Boot例子 https://gitee.com/xiandafu/beetlsql/tree/mast..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2025-12-21T14:30:08.000Z"}],["meta",{"property":"article:modified_time","content":"2025-12-21T14:30:08.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"SpringBoot 快速开始\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-12-21T14:30:08.000Z\\",\\"author\\":[]}
167"]]},"headers":[],"readingTime":{"minutes":4.68,"words":1405},"git":{"updatedTime":1766327408000,"contributors":[{"name":"lijiazhi","username":"lijiazhi","email":"[email protected]","commits":4,"avatar":"https://gravatar.com/avatar/1b5114831459724ad4acc394423b4b48ecfa4a7e0659fbe07a0ce5181a1050a7?d=retro"}]},"autoDesc":true,"filePathRelative":"notes/beetlsql/beetlsql_springbootquickstart.md"}');export{d as comp,r as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.