mybatis映射XML文件详解及实例
<p><strong>mybatis映射XML文件</strong></p>
<p>
一个简单的映射文件:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_527950">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><?</code><code class="xml keyword">xml</code> <code class="xml color1">version</code><code class="xml plain">=</code><code class="xml string">"1.0"</code> <code class="xml color1">encoding</code><code class="xml plain">=</code><code class="xml string">"UTF-8"</code> <code class="xml plain">?></code>
</div>
<div class="line number2 index1 alt1">
<code class="xml plain"><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ></code>
</div>
<div class="line number3 index2 alt2">
<code class="xml plain"><</code><code class="xml keyword">mapper</code> <code class="xml color1">namespace</code><code class="xml plain">=</code><code class="xml string">"com.cnx.wxcar.mapper.CustomerMapper"</code><code class="xml plain">></code>
</div>
<div class="line number4 index3 alt1">
<code class="xml plain"></</code><code class="xml keyword">mapper</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
当然这个文件中没有任何的元素</p>
<p>
The Mapper XML files have only a few first class elements :</p>
<ol>
<li>
cache – Configuration of the cache for a given namespace.</li>
<li>
cache-ref – Reference to a cache configuration from another namespace.</li>
<li>
resultMap – The most complicated and powerful element that describes how to load your objects from the database result sets.</li>
<li>
sql – A reusable chunk of SQL that can be referenced by other statements.</li>
<li>
insert – A mapped INSERT statement.</li>
<li>
update – A mapped UPDATE statement.</li>
<li>
delete – A mapped DELETE statement.</li>
<li>
select – A mapped SELECT statement.</li>
</ol>
<p>
<strong>select</strong></p>
<p>
简单的例子:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_79851">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">select</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"selectPerson"</code> <code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"int"</code> <code class="xml color1">resultType</code><code class="xml plain">=</code><code class="xml string">"hashmap"</code><code class="xml plain">></code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml plain">SELECT * FROM PERSON WHERE ID = #{id}</code>
</div>
<div class="line number3 index2 alt2">
<code class="xml plain"></</code><code class="xml keyword">select</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
select也有很多属性可以让你配置:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_128362">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">select</code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"selectPerson"</code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"int"</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml spaces"> </code><code class="xml color1">parameterMap</code><code class="xml plain">=</code><code class="xml string">"deprecated"</code>
</div>
<div class="line number5 index4 alt2">
<code class="xml spaces"> </code><code class="xml color1">resultType</code><code class="xml plain">=</code><code class="xml string">"hashmap"</code>
</div>
<div class="line number6 index5 alt1">
<code class="xml spaces"> </code><code class="xml color1">resultMap</code><code class="xml plain">=</code><code class="xml string">"personResultMap"</code>
</div>
<div class="line number7 index6 alt2">
<code class="xml spaces"> </code><code class="xml color1">flushCache</code><code class="xml plain">=</code><code class="xml string">"false"</code>
</div>
<div class="line number8 index7 alt1">
<code class="xml spaces"> </code><code class="xml color1">useCache</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number9 index8 alt2">
<code class="xml spaces"> </code><code class="xml color1">timeout</code><code class="xml plain">=</code><code class="xml string">"10000"</code>
</div>
<div class="line number10 index9 alt1">
<code class="xml spaces"> </code><code class="xml color1">fetchSize</code><code class="xml plain">=</code><code class="xml string">"256"</code>
</div>
<div class="line number11 index10 alt2">
<code class="xml spaces"> </code><code class="xml color1">statementType</code><code class="xml plain">=</code><code class="xml string">"PREPARED"</code>
</div>
<div class="line number12 index11 alt1">
<code class="xml spaces"> </code><code class="xml color1">resultSetType</code><code class="xml plain">=</code><code class="xml string">"FORWARD_ONLY"</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>insert, update and delete</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_350631">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">insert</code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"insertAuthor"</code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"domain.blog.Author"</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml spaces"> </code><code class="xml color1">flushCache</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number5 index4 alt2">
<code class="xml spaces"> </code><code class="xml color1">statementType</code><code class="xml plain">=</code><code class="xml string">"PREPARED"</code>
</div>
<div class="line number6 index5 alt1">
<code class="xml spaces"> </code><code class="xml color1">keyProperty</code><code class="xml plain">=</code><code class="xml string">""</code>
</div>
<div class="line number7 index6 alt2">
<code class="xml spaces"> </code><code class="xml color1">keyColumn</code><code class="xml plain">=</code><code class="xml string">""</code>
</div>
<div class="line number8 index7 alt1">
<code class="xml spaces"> </code><code class="xml color1">useGeneratedKeys</code><code class="xml plain">=</code><code class="xml string">""</code>
</div>
<div class="line number9 index8 alt2">
<code class="xml spaces"> </code><code class="xml color1">timeout</code><code class="xml plain">=</code><code class="xml string">"20"</code><code class="xml plain">></code>
</div>
<div class="line number10 index9 alt1">
</div>
<div class="line number11 index10 alt2">
<code class="xml plain"><</code><code class="xml keyword">update</code>
</div>
<div class="line number12 index11 alt1">
<code class="xml spaces"> </code><code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"updateAuthor"</code>
</div>
<div class="line number13 index12 alt2">
<code class="xml spaces"> </code><code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"domain.blog.Author"</code>
</div>
<div class="line number14 index13 alt1">
<code class="xml spaces"> </code><code class="xml color1">flushCache</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number15 index14 alt2">
<code class="xml spaces"> </code><code class="xml color1">statementType</code><code class="xml plain">=</code><code class="xml string">"PREPARED"</code>
</div>
<div class="line number16 index15 alt1">
<code class="xml spaces"> </code><code class="xml color1">timeout</code><code class="xml plain">=</code><code class="xml string">"20"</code><code class="xml plain">></code>
</div>
<div class="line number17 index16 alt2">
</div>
<div class="line number18 index17 alt1">
<code class="xml plain"><</code><code class="xml keyword">delete</code>
</div>
<div class="line number19 index18 alt2">
<code class="xml spaces"> </code><code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"deleteAuthor"</code>
</div>
<div class="line number20 index19 alt1">
<code class="xml spaces"> </code><code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"domain.blog.Author"</code>
</div>
<div class="line number21 index20 alt2">
<code class="xml spaces"> </code><code class="xml color1">flushCache</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number22 index21 alt1">
<code class="xml spaces"> </code><code class="xml color1">statementType</code><code class="xml plain">=</code><code class="xml string">"PREPARED"</code>
</div>
<div class="line number23 index22 alt2">
<code class="xml spaces"> </code><code class="xml color1">timeout</code><code class="xml plain">=</code><code class="xml string">"20"</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
语句:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_115629">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">insert</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"insertAuthor"</code><code class="xml plain">></code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml plain">insert into Author (id,username,password,email,bio)</code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml plain">values (#{id},#{username},#{password},#{email},#{bio})</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml plain"></</code><code class="xml keyword">insert</code><code class="xml plain">></code>
</div>
<div class="line number5 index4 alt2">
</div>
<div class="line number6 index5 alt1">
<code class="xml plain"><</code><code class="xml keyword">update</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"updateAuthor"</code><code class="xml plain">></code>
</div>
<div class="line number7 index6 alt2">
<code class="xml spaces"> </code><code class="xml plain">update Author set</code>
</div>
<div class="line number8 index7 alt1">
<code class="xml spaces"> </code><code class="xml plain">username = #{username},</code>
</div>
<div class="line number9 index8 alt2">
<code class="xml spaces"> </code><code class="xml plain">password = #{password},</code>
</div>
<div class="line number10 index9 alt1">
<code class="xml spaces"> </code><code class="xml plain">email = #{email},</code>
</div>
<div class="line number11 index10 alt2">
<code class="xml spaces"> </code><code class="xml plain">bio = #{bio}</code>
</div>
<div class="line number12 index11 alt1">
<code class="xml spaces"> </code><code class="xml plain">where id = #{id}</code>
</div>
<div class="line number13 index12 alt2">
<code class="xml plain"></</code><code class="xml keyword">update</code><code class="xml plain">></code>
</div>
<div class="line number14 index13 alt1">
</div>
<div class="line number15 index14 alt2">
<code class="xml plain"><</code><code class="xml keyword">delete</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"deleteAuthor"</code><code class="xml plain">></code>
</div>
<div class="line number16 index15 alt1">
<code class="xml spaces"> </code><code class="xml plain">delete from Author where id = #{id}</code>
</div>
<div class="line number17 index16 alt2">
<code class="xml plain"></</code><code class="xml keyword">delete</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
f your database supports auto-generated key fields (e.g. MySQL and SQL Server),上面的插入语句可以写成:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_802926">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">insert</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"insertAuthor"</code> <code class="xml color1">useGeneratedKeys</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml color1">keyProperty</code><code class="xml plain">=</code><code class="xml string">"id"</code><code class="xml plain">></code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml plain">insert into Author (username,password,email,bio)</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml spaces"> </code><code class="xml plain">values (#{username},#{password},#{email},#{bio})</code>
</div>
<div class="line number5 index4 alt2">
<code class="xml plain"></</code><code class="xml keyword">insert</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
如果你的数据库还支持多条记录插入,可以使用下面这个语句:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_331279">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">insert</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"insertAuthor"</code> <code class="xml color1">useGeneratedKeys</code><code class="xml plain">=</code><code class="xml string">"true"</code>
</div>
<div class="line number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml color1">keyProperty</code><code class="xml plain">=</code><code class="xml string">"id"</code><code class="xml plain">></code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml plain">insert into Author (username, password, email, bio) values</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml spaces"> </code><code class="xml plain"><</code><code class="xml keyword">foreach</code> <code class="xml color1">item</code><code class="xml plain">=</code><code class="xml string">"item"</code> <code class="xml color1">collection</code><code class="xml plain">=</code><code class="xml string">"list"</code> <code class="xml color1">separator</code><code class="xml plain">=</code><code class="xml string">","</code><code class="xml plain">></code>
</div>
<div class="line number5 index4 alt2">
<code class="xml spaces"> </code><code class="xml plain">(#{item.username}, #{item.password}, #{item.email}, #{item.bio})</code>
</div>
<div class="line number6 index5 alt1">
<code class="xml spaces"> </code><code class="xml plain"></</code><code class="xml keyword">foreach</code><code class="xml plain">></code>
</div>
<div class="line number7 index6 alt2">
<code class="xml plain"></</code><code class="xml keyword">insert</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>sql</strong></p>
<p>
这个element可以定义一些sql代码的碎片,然后在多个语句中使用,降低耦合。比如:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_303404">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain"><</code><code class="xml keyword">sql</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"userColumns"</code><code class="xml plain">> ${alias}.id,${alias}.username,${alias}.password </</code><code class="xml keyword">sql</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后在下面的语句中使用:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_876247">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql plain"><</code><code class="sql keyword">select</code> <code class="sql plain">id=</code><code class="sql string">"selectUsers"</code> <code class="sql plain">resultType=</code><code class="sql string">"map"</code><code class="sql plain">></code>
</div>
<div class="line number2 index1 alt1">
<code class="sql spaces"> </code><code class="sql keyword">select</code>
</div>
<div class="line number3 index2 alt2">
<code class="sql spaces"> </code><code class="sql plain"><include refid=</code><code class="sql string">"userColumns"</code><code class="sql plain">><property </code><code class="sql keyword">name</code><code class="sql plain">=</code><code class="sql string">"alias"</code> <code class="sql plain">value=</code><code class="sql string">"t1"</code><code class="sql plain">/></include>,</code>
</div>
<div class="line number4 index3 alt1">
<code class="sql spaces"> </code><code class="sql plain"><include refid=</code><code class="sql string">"userColumns"</code><code class="sql plain">><property </code><code class="sql keyword">name</code><code class="sql plain">=</code><code class="sql string">"alias"</code> <code class="sql plain">value=</code><code class="sql string">"t2"</code><code class="sql plain">/></include></code>
</div>
<div class="line number5 index4 alt2">
<code class="sql spaces"> </code><code class="sql keyword">from</code> <code class="sql plain">some_table t1</code>
</div>
<div class="line number6 index5 alt1">
<code class="sql spaces"> </code><code class="sql color1">cross</code> <code class="sql color1">join</code> <code class="sql plain">some_table t2</code>
</div>
<div class="line number7 index6 alt2">
<code class="sql plain"></</code><code class="sql keyword">select</code><code class="sql plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>Result Maps</strong></p>
<p>
官网给了个最最复杂的例子</p>
<p>
大体意思呢就是一个博客系统有一个作者,很多博文,博文中有一个作者,很多评论,很多标签(包括了一对多,一对一)</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_956928">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
<div class="line number45 index44 alt2">
45</div>
<div class="line number46 index45 alt1">
46</div>
<div class="line number47 index46 alt2">
47</div>
<div class="line number48 index47 alt1">
48</div>
<div class="line number49 index48 alt2">
49</div>
<div class="line number50 index49 alt1">
50</div>
<div class="line number51 index50 alt2">
51</div>
<div class="line number52 index51 alt1">
52</div>
<div class="line number53 index52 alt2">
53</div>
<div class="line number54 index53 alt1">
54</div>
<div class="line number55 index54 alt2">
55</div>
<div class="line number56 index55 alt1">
56</div>
<div class="line number57 index56 alt2">
57</div>
<div class="line number58 index57 alt1">
58</div>
<div class="line number59 index58 alt2">
59</div>
<div class="line number60 index59 alt1">
60</div>
<div class="line number61 index60 alt2">
61</div>
<div class="line number62 index61 alt1">
62</div>
<div class="line number63 index62 alt2">
63</div>
<div class="line number64 index63 alt1">
64</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql plain"><!</code><code class="sql comments">-- Very Complex Statement --></code>
</div>
<div class="line number2 index1 alt1">
<code class="sql plain"><</code><code class="sql keyword">select</code> <code class="sql plain">id=</code><code class="sql string">"selectBlogDetails"</code> <code class="sql plain">resultMap=</code><code class="sql string">"detailedBlogResultMap"</code><code class="sql plain">></code>
</div>
<div class="line number3 index2 alt2">
<code class="sql spaces"> </code><code class="sql keyword">select</code>
</div>
<div class="line number4 index3 alt1">
<code class="sql spaces"> </code><code class="sql plain">B.id </code><code class="sql keyword">as</code> <code class="sql plain">blog_id,</code>
</div>
<div class="line number5 index4 alt2">
<code class="sql spaces"> </code><code class="sql plain">B.title </code><code class="sql keyword">as</code> <code class="sql plain">blog_title,</code>
</div>
<div class="line number6 index5 alt1">
<code class="sql spaces"> </code><code class="sql plain">B.author_id </code><code class="sql keyword">as</code> <code class="sql plain">blog_author_id,</code>
</div>
<div class="line number7 index6 alt2">
<code class="sql spaces"> </code><code class="sql plain">A.id </code><code class="sql keyword">as</code> <code class="sql plain">author_id,</code>
</div>
<div class="line number8 index7 alt1">
<code class="sql spaces"> </code><code class="sql plain">A.username </code><code class="sql keyword">as</code> <code class="sql plain">author_username,</code>
</div>
<div class="line number9 index8 alt2">
<code class="sql spaces"> </code><code class="sql plain">A.</code><code class="sql keyword">password</code> <code class="sql keyword">as</code> <code class="sql plain">author_password,</code>
</div>
<div class="line number10 index9 alt1">
<code class="sql spaces"> </code><code class="sql plain">A.email </code><code class="sql keyword">as</code> <code class="sql plain">author_email,</code>
</div>
<div class="line number11 index10 alt2">
<code class="sql spaces"> </code><code class="sql plain">A.bio </code><code class="sql keyword">as</code> <code class="sql plain">author_bio,</code>
</div>
<div class="line number12 index11 alt1">
<code class="sql spaces"> </code><code class="sql plain">A.favourite_section </code><code class="sql keyword">as</code> <code class="sql plain">author_favourite_section,</code>
</div>
<div class="line number13 index12 alt2">
<code class="sql spaces"> </code><code class="sql plain">P.id </code><code class="sql keyword">as</code> <code class="sql plain">post_id,</code>
</div>
<div class="line number14 index13 alt1">
<code class="sql spaces"> </code><code class="sql plain">P.blog_id </code><code class="sql keyword">as</code> <code class="sql plain">post_blog_id,</code>
</div>
<div class="line number15 index14 alt2">
<code class="sql spaces"> </code><code class="sql plain">P.author_id </code><code class="sql keyword">as</code> <code class="sql plain">post_author_id,</code>
</div>
<div class="line number16 index15 alt1">
<code class="sql spaces"> </code><code class="sql plain">P.created_on </code><code class="sql keyword">as</code> <code class="sql plain">post_created_on,</code>
</div>
<div class="line number17 index16 alt2">
<code class="sql spaces"> </code><code class="sql plain">P.</code><code class="sql keyword">section</code> <code class="sql keyword">as</code> <code class="sql plain">post_section,</code>
</div>
<div class="line number18 index17 alt1">
<code class="sql spaces"> </code><code class="sql plain">P.subject </code><code class="sql keyword">as</code> <code class="sql plain">post_subject,</code>
</div>
<div class="line number19 index18 alt2">
<code class="sql spaces"> </code><code class="sql plain">P.draft </code><code class="sql keyword">as</code> <code class="sql plain">draft,</code>
</div>
<div class="line number20 index19 alt1">
<code class="sql spaces"> </code><code class="sql plain">P.body </code><code class="sql keyword">as</code> <code class="sql plain">post_body,</code>
</div>
<div class="line number21 index20 alt2">
<code class="sql spaces"> </code><code class="sql plain">C.id </code><code class="sql keyword">as</code> <code class="sql plain">comment_id,</code>
</div>
<div class="line number22 index21 alt1">
<code class="sql spaces"> </code><code class="sql plain">C.post_id </code><code class="sql keyword">as</code> <code class="sql plain">comment_post_id,</code>
</div>
<div class="line number23 index22 alt2">
<code class="sql spaces"> </code><code class="sql plain">C.</code><code class="sql keyword">name</code> <code class="sql keyword">as</code> <code class="sql plain">comment_name,</code>
</div>
<div class="line number24 index23 alt1">
<code class="sql spaces"> </code><code class="sql plain">C.comment </code><code class="sql keyword">as</code> <code class="sql plain">comment_text,</code>
</div>
<div class="line number25 index24 alt2">
<code class="sql spaces"> </code><code class="sql plain">T.id </code><code class="sql keyword">as</code> <code class="sql plain">tag_id,</code>
</div>
<div class="line number26 index25 alt1">
<code class="sql spaces"> </code><code class="sql plain">T.</code><code class="sql keyword">name</code> <code class="sql keyword">as</code> <code class="sql plain">tag_name</code>
</div>
<div class="line number27 index26 alt2">
<code class="sql spaces"> </code><code class="sql keyword">from</code> <code class="sql plain">Blog B</code>
</div>
<div class="line number28 index27 alt1">
<code class="sql spaces"> </code><code class="sql color2">left</code> <code class="sql color1">outer</code> <code class="sql color1">join</code> <code class="sql plain">Author A </code><code class="sql keyword">on</code> <code class="sql plain">B.author_id = A.id</code>
</div>
<div class="line number29 index28 alt2">
<code class="sql spaces"> </code><code class="sql color2">left</code> <code class="sql color1">outer</code> <code class="sql color1">join</code> <code class="sql plain">Post P </code><code class="sql keyword">on</code> <code class="sql plain">B.id = P.blog_id</code>
</div>
<div class="line number30 index29 alt1">
<code class="sql spaces"> </code><code class="sql color2">left</code> <code class="sql color1">outer</code> <code class="sql color1">join</code> <code class="sql plain">Comment C </code><code class="sql keyword">on</code> <code class="sql plain">P.id = C.post_id</code>
</div>
<div class="line number31 index30 alt2">
<code class="sql spaces"> </code><code class="sql color2">left</code> <code class="sql color1">outer</code> <code class="sql color1">join</code> <code class="sql plain">Post_Tag PT </code><code class="sql keyword">on</code> <code class="sql plain">PT.post_id = P.id</code>
</div>
<div class="line number32 index31 alt1">
<code class="sql spaces"> </code><code class="sql color2">left</code> <code class="sql color1">outer</code> <code class="sql color1">join</code> <code class="sql plain">Tag T </code><code class="sql keyword">on</code> <code class="sql plain">PT.tag_id = T.id</code>
</div>
<div class="line number33 index32 alt2">
<code class="sql spaces"> </code><code class="sql keyword">where</code> <code class="sql plain">B.id = #{id}</code>
</div>
<div class="line number34 index33 alt1">
<code class="sql plain"></</code><code class="sql keyword">select</code><code class="sql plain">></code>
</div>
<div class="line number35 index34 alt2">
</div>
<div class="line number36 index35 alt1">
<code class="sql plain"><!</code><code class="sql comments">-- Very Complex Result Map --></code>
</div>
<div class="line number37 index36 alt2">
<code class="sql plain"><resultMap id=</code><code class="sql string">"detailedBlogResultMap"</code> <code class="sql plain">type=</code><code class="sql string">"Blog"</code><code class="sql plain">></code>
</div>
<div class="line number38 index37 alt1">
<code class="sql spaces"> </code><code class="sql plain"><constructor></code>
</div>
<div class="line number39 index38 alt2">
<code class="sql spaces"> </code><code class="sql plain"><idArg </code><code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"blog_id"</code> <code class="sql plain">javaType=</code><code class="sql string">"int"</code><code class="sql plain">/></code>
</div>
<div class="line number40 index39 alt1">
<code class="sql spaces"> </code><code class="sql plain"></constructor></code>
</div>
<div class="line number41 index40 alt2">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"title"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"blog_title"</code><code class="sql plain">/></code>
</div>
<div class="line number42 index41 alt1">
<code class="sql spaces"> </code><code class="sql plain"><association property=</code><code class="sql string">"author"</code> <code class="sql plain">javaType=</code><code class="sql string">"Author"</code><code class="sql plain">></code>
</div>
<div class="line number43 index42 alt2">
<code class="sql spaces"> </code><code class="sql plain"><id property=</code><code class="sql string">"id"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_id"</code><code class="sql plain">/></code>
</div>
<div class="line number44 index43 alt1">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"username"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_username"</code><code class="sql plain">/></code>
</div>
<div class="line number45 index44 alt2">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"password"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_password"</code><code class="sql plain">/></code>
</div>
<div class="line number46 index45 alt1">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"email"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_email"</code><code class="sql plain">/></code>
</div>
<div class="line number47 index46 alt2">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"bio"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_bio"</code><code class="sql plain">/></code>
</div>
<div class="line number48 index47 alt1">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"favouriteSection"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"author_favourite_section"</code><code class="sql plain">/></code>
</div>
<div class="line number49 index48 alt2">
<code class="sql spaces"> </code><code class="sql plain"></association></code>
</div>
<div class="line number50 index49 alt1">
<code class="sql spaces"> </code><code class="sql plain"><collection property=</code><code class="sql string">"posts"</code> <code class="sql plain">ofType=</code><code class="sql string">"Post"</code><code class="sql plain">></code>
</div>
<div class="line number51 index50 alt2">
<code class="sql spaces"> </code><code class="sql plain"><id property=</code><code class="sql string">"id"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"post_id"</code><code class="sql plain">/></code>
</div>
<div class="line number52 index51 alt1">
<code class="sql spaces"> </code><code class="sql plain"><result property=</code><code class="sql string">"subject"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"post_subject"</code><code class="sql plain">/></code>
</div>
<div class="line number53 index52 alt2">
<code class="sql spaces"> </code><code class="sql plain"><association property=</code><code class="sql string">"author"</code> <code class="sql plain">javaType=</code><code class="sql string">"Author"</code><code class="sql plain">/></code>
</div>
<div class="line number54 index53 alt1">
<code class="sql spaces"> </code><code class="sql plain"><collection property=</code><code class="sql string">"comments"</code> <code class="sql plain">ofType=</code><code class="sql string">"Comment"</code><code class="sql plain">></code>
</div>
<div class="line number55 index54 alt2">
<code class="sql spaces"> </code><code class="sql plain"><id property=</code><code class="sql string">"id"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"comment_id"</code><code class="sql plain">/></code>
</div>
<div class="line number56 index55 alt1">
<code class="sql spaces"> </code><code class="sql plain"></collection></code>
</div>
<div class="line number57 index56 alt2">
<code class="sql spaces"> </code><code class="sql plain"><collection property=</code><code class="sql string">"tags"</code> <code class="sql plain">ofType=</code><code class="sql string">"Tag"</code> <code class="sql plain">></code>
</div>
<div class="line number58 index57 alt1">
<code class="sql spaces"> </code><code class="sql plain"><id property=</code><code class="sql string">"id"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"tag_id"</code><code class="sql plain">/></code>
</div>
<div class="line number59 index58 alt2">
<code class="sql spaces"> </code><code class="sql plain"></collection></code>
</div>
<div class="line number60 index59 alt1">
<code class="sql spaces"> </code><code class="sql plain"><discriminator javaType=</code><code class="sql string">"int"</code> <code class="sql keyword">column</code><code class="sql plain">=</code><code class="sql string">"draft"</code><code class="sql plain">></code>
</div>
<div class="line number61 index60 alt2">
<code class="sql spaces"> </code><code class="sql plain"><</code><code class="sql color2">case</code> <code class="sql plain">value=</code><code class="sql string">"1"</code> <code class="sql plain">resultType=</code><code class="sql string">"DraftPost"</code><code class="sql plain">/></code>
</div>
<div class="line number62 index61 alt1">
<code class="sql spaces"> </code><code class="sql plain"></discriminator></code>
</div>
<div class="line number63 index62 alt2">
<code class="sql spaces"> </code><code class="sql plain"></collection></code>
</div>
<div class="line number64 index63 alt1">
<code class="sql plain"></resultMap></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!</p>
<p>
原文链接:https://my.oschina.net/gef/blog/704880</p>
頁:
[1]