MyBatis获取数据库自生成的主键Id详解及实例代码
<p><strong>MyBatis获取数据库自生成的主键Id详解及实例代码</strong></p>
<p>
在使用MySQL数据库时我们一般使用数据库的自增主键自动产生主键。如果在插入主表时,我们需要同时插入从表的数据,这时我们通常需要知道主表插入时自动产生的主键Id值。</p>
<p>
下面介绍使用MyBatis进行插入时,如何同时获取数据库自生成的主键:</p>
<p>
<strong>1、XML配置文件</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_386917">
<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">insert</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"insert"</code> <code class="xml color1">parameterType</code><code class="xml plain">=</code><code class="xml string">"Person"</code> <code class="xml color1">useGeneratedKeys</code><code class="xml plain">=</code><code class="xml string">"true"</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 number2 index1 alt1">
<code class="xml spaces"> </code><code class="xml plain">insert into person(name,pswd) values(#{name},#{pswd})</code>
</div>
<div class="line number3 index2 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>2、Mapper中的方法</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_483693">
<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="sql keyword">int</code> <code class="sql keyword">insert</code><code class="sql plain">(Person person);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
注意在调用这个方法时,返回的int值并不是主键,而是插入的记录数。主键id会被赋值到输入的person对象里,自动赋值给person对象的id属性。比如:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterjava" id="highlighter_206168">
<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="java plain">Person person = </code><code class="java keyword">new</code> <code class="java plain">Person(</code><code class="java string">"name"</code><code class="java plain">,</code><code class="java string">"psw"</code><code class="java plain">);</code>
</div>
<div class="line number2 index1 alt1">
<code class="java comments">//num是插入的记录数</code>
</div>
<div class="line number3 index2 alt2">
<code class="java keyword">int</code> <code class="java plain">num = PersonMapper.insert(person);</code>
</div>
<div class="line number4 index3 alt1">
<code class="java comments">//person对象的id属性会变成自生成的id</code>
</div>
<div class="line number5 index4 alt2">
<code class="java keyword">int</code> <code class="java plain">id = person.getId();</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>
頁:
[1]