大水瓶 發表於 2023-8-25 00:00:00

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">&lt;</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">&gt;</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">&lt;/</code><code class="xml keyword">insert</code><code class="xml plain">&gt;</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]
查看完整版本: MyBatis获取数据库自生成的主键Id详解及实例代码