(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型別一...