MyBatis對映檔案

2021-09-27 03:07:27 字數 4049 閱讀 4222

(5)刪除

(6)更新

(7)根據員工id和姓名獲取員工物件

(8)測試類

mybatis 的真正強大在於它的對映語句,也是它的魔力所在。由於它的異常強大,對映器的 xml 檔案就顯得相對簡單。如果拿它跟具有相同功能的 jdbc **進行對比,你會立即發現省掉了將近 95% 的**。mybatis 就是針對 sql 構建的,並且比普通的方法做的更好。

sql 對映檔案有很少的幾個頂級元素(按照它們應該被定義的順序):

>

resource

= />

class

=/>

>

如果使用批量註冊,這種方式要求sql對映檔名必須和介面名相同並且在同一目錄下。

>

name

=/>

>

建立資料庫表employee、導包、建立employee類、設定主配置檔案mybatis_config.xml、建立對映檔案、將log4j.xml複製到config資料夾中。

/**

* 根據員工id獲取員工物件

id:對映檔案中sql語句片段的表示,必須唯一

resulttype:返回結果型別(要將資料庫查詢的結果集封裝為什麼型別,resulttype就應該定義為什麼型別)

*/employee getemployeebyid

(integer id)

;

namespace

=>

"getemployeebyid"

resulttype

="employee"

>

select id, last_name,gender,descr from employee where id = #

select

>

>

/**

* 新增

* 如果需要返回值:常用的型別integer,long,boolean

*/void

insertemployee

(employee emp)

;

支援主鍵自增,例如mysql資料庫

不支援主鍵自增,例如oracle資料庫

需求: 插入一條新資料,立馬查詢這條資料。

(1)若資料庫支援自動生成主鍵的字段(比如 mysql 和 sql server),則可以設定 usegeneratedkeys=」true」,然後再把 keyproperty 設定到目標屬性上。(如果沒有先獲取主鍵值,那麼先插入一條資料立馬查詢這條資料是查不到的

"insertemployee"

parametertype

="mybatis.beans.employee"

databaseid

="mysql"

usegeneratedkeys

="true"

keyproperty

="id"

>

insert into tbl_employee(last_name,email,gender) values(#,#,#)

insert

>

(2)而對於不支援自增型主鍵的資料庫(例如 oracle),則可以使用 selectkey 子元素:selectkey 元素將會首先執行,id 會被設定,然後插入語句會被呼叫。

"insertemployee"

parametertype

="mybatis.beans.employee"

databaseid

="oracle"

>

order

="before"

keyproperty

="id"

resulttype

="integer"

>

select employee_seq.nextval from dual

selectkey

>

insert into orcl_employee(id,last_name,email,gender) values(#,#,#,#)

insert

>

namespace

=>

"insertemployee"

parametertype

="employee"

usegeneratedkeys

="true"

keyproperty

="id"

>

insert into tbl_employee(last_name,gender,descr) values(#,#,#)

insert

>

>

/**

* 刪除

*/void

deleteemployeebyid

(integer id)

;

namespace

=>

"deleteemployeebyid"

>

delete from tbl_employee where id = #

delete

>

>

/**

* 修改

*/void

updateemployee

(employee emp)

;

namespace

=>

"updateemployee"

>

update

tbl_employee

setlast_name = #,

gender = #,

descr = #

where

id = #

update

>

>

employee getemployeebyidandlastname

(integer id,string lastname)

;

namespace

=>

"getemployeebyidandlastname"

resulttype

="employee"

>

select id,last_name,gender,descr from tbl_employee

where id = # and last_name=#

select

>

>

注意事務:如果獲取session的時候通過sqlsessionfactory.opensession(true),則不需要手動提交;

如果通過sqlsessionfactory.opensession()獲取,則需要通過session.commit()手動提交事務。

public

class

testcrud

/** * 測試新增

*/@test

public

void

testinsert()

throws exception

/** * 測試刪除

*/@test

public

void

testdelete()

/** * 測試更新

*/@test

public

void

testupdate()

/** * 測試查詢

*/@test

public

void

testselect()

/** * 測試傳遞多個引數

*/@test

public

void

testgetemployeebyidandlastname()

}

Mybatis對映檔案

查詢語句是mybatis中最常用的元素之一,mybatis的基本原則之一是 在每個插入,更新,或刪除操作之間,通常會執行多個查詢操作。因此,mybatis在查詢和結果對映做了相當多的改進。乙個簡單查詢的select元素是很簡單的 select from person where id 這個語句名為s...

MyBatis對映檔案

1.動態sql語句概述 mybatis 的對映檔案中,前面我們的 sql 都是比較簡單的,有些時候業務邏輯複雜時,我們的 sql是動態變化的,此時在前面的學習中我們的 sql 就不能滿足要求了。2.動態 sql 之 我們根據實體類的不同取值,使用不同的 sql語句來進行查詢。比如在 id如果不為空時...

Mybatis 四 對映檔案

參考入門程式中的finduserbyid的對映檔案。位置config user.xml 參考入門程式insertuser。綜合查詢時,可能會根據使用者資訊 商品資訊 訂單資訊等作為條件進行查詢,使用者資訊中的查詢條件由 使用者的名稱和性別進行查詢 加上getter和setter 和傳遞pojo型別一...