天天看點

【狂人小白】MyBatis.004 第一個插入!

在POJO對象對應的Mapper配置檔案中進行配置

使用<insert />标簽名進行構造

舉個例子,如下代碼

位置:cc/fozone/demo/mybatis/config/mapper/User.mapper.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code> <code>?&gt;</code>

<code>&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"</code>

<code>"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;</code>

<code>&lt;</code><code>mapper</code> <code>namespace</code><code>=</code><code>"cc.fozone.demo.mybatis.controller.IUserController"</code><code>&gt; </code>

<code>...</code>

<code>&lt;</code><code>insert</code> 

<code>    </code><code>id</code><code>=</code><code>"insertUser"</code> 

<code>    </code><code>parameterType</code><code>=</code><code>"cc.fozone.demo.mybatis.pojo.User"</code>  

<code>    </code><code>statementType</code><code>=</code><code>"PREPARED"</code> 

<code>    </code><code>flushCache</code><code>=</code><code>"true"</code> 

<code>    </code><code>keyProperty</code><code>=</code><code>"id"</code><code>&gt;</code>

<code>    </code> 

<code>    </code><code>&lt;![CDATA[</code>

<code>       </code><code>insert into users (name,age,phone) values (#{name},#{age},#{phone}) </code>

<code>    </code><code>]]&gt;</code>

<code>&lt;/</code><code>insert</code><code>&gt;</code>

<code>&lt;/</code><code>mapper</code><code>&gt;</code>

屬性

必選

含義

id

全局唯一标示符,代表該操作

parameterType

參數類型,可以是基本資料類,例如int、string等,也可以是某個類

statementType

STATEMENT,PREPARED(預設) 或 CALLABLE

MyBatis選擇使用Statement,PreparedStatement 或 CallableStatement。

flushCache

預設:false,執行時是否清空緩存

keyProperty

主要用作自動生成自增主鍵的字段設定,對于不支援自增的資料庫,有特别用處

預設:空

注:僅對insert和update有用

keyColumn

與上述相同,但主要設定keyProperty

useGeneratedKeys

通過JDBC驅動的getGeneratedKeys方法傳回資料庫自己生成的主鍵

預設:false

<code>    </code><code>...</code>

<code>    </code><code>&gt;</code>

執行插入語句時,需要傳入類cc.fozone.demo.mybatis.pojo.User的對象;

解析時,将會根據#{string}的字段,通過傳遞的對象,調用對應的getter方法取值替換,

例如:#{name}将會User.getName()值替換,#{age}将會被User.getAge()值替換;

位置:cc/fozone/demo/mybatis/controller/IUserController.java

<code>package</code> <code>cc.fozone.demo.mybatis.controller;</code>

<code>import</code> <code>java.util.List;</code>

<code>import</code> <code>cc.fozone.demo.mybatis.pojo.User;</code>

<code>public</code> <code>interface</code> <code>IUserController {</code>

<code>    </code><code>// 添加使用者資訊</code>

<code>    </code><code>public</code> <code>void</code> <code>insertUser(User user);</code>

<code>}</code>

位置:cc/fozone/demo/mybatis/App.java

<code>package</code> <code>cc.fozone.demo.mybatis;</code>

<code>public</code> <code>class</code> <code>App {</code>

<code>    </code><code>// SQL會話工廠</code>

<code>    </code><code>private</code> <code>SqlSessionFactory factory;</code>

<code>        </code><code>...</code>

<code>        </code> 

<code>        </code><code>public</code> <code>void</code> <code>insertUser() {</code>

<code>            </code><code>...</code>

<code>        </code><code>}</code>

1. 采用接口方式執行(推薦)

<code>public</code> <code>void</code> <code>insertUser() {</code>

<code>    </code><code>User user = </code><code>new</code> <code>User();</code>

<code>    </code><code>user.setName(</code><code>"user"</code><code>);</code>

<code>    </code><code>user.setAge(</code><code>100</code><code>);</code>

<code>    </code><code>user.setPhone(</code><code>"13812341234"</code><code>);</code>

<code>    </code><code>// 打開會話</code>

<code>    </code><code>SqlSession session = factory.openSession();</code>

<code>    </code><code>// 通過getMapper獲得執行個體化接口</code>

<code>    </code><code>// 這裡為什麼可以執行個體化,重點在于mapper配置的namespace的配置</code>

<code>    </code><code>IUserController controller = session.getMapper(IUserController.</code><code>class</code><code>);</code>

<code>    </code><code>// 插入資料</code>

<code>    </code><code>controller.insertUser(user);</code>

<code>    </code><code>// 送出執行SQL</code>

<code>    </code><code>session.commit();</code>

<code>    </code><code>// 關閉會話</code>

<code>    </code><code>session.close();</code>

2. 采用session方式執行

<code>    </code><code>// 通過session方式插入資料</code>

<code>    </code><code>session.insert(</code><code>"insertUser"</code><code>,user);</code>

1. 編寫執行函數

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>App app = </code><code>new</code> <code>App();</code>

<code>        </code><code>app.insertUser();</code>

<code>    </code><code>}</code>

2. 執行後,查詢資料庫users表資料是否插入,存在即成功。

<a href="http://s3.51cto.com/wyfs02/M00/49/F7/wKiom1QgPJayzcNdAABU43N3rjo116.jpg" target="_blank"></a>

本文轉自 sundunjam 51CTO部落格,原文連結:http://blog.51cto.com/sunspot/1557107,如需轉載請自行聯系原作者