輸入對映和輸出對映
複製昨天的工程,按照下圖進行
最終效果如下圖:
parametertype(輸入型別)
傳遞簡單型別
參考第一天內容。
使用#{}佔位符,或者${}進行sql拼接。
傳遞pojo物件
參考第一天的內容。
mybatis使用ognl表示式解析物件欄位的值,#{}或者${}括號中的值為pojo屬性名稱。
傳遞pojo包裝物件
開發中通過可以使用pojo傳遞查詢條件。
查詢條件可能是綜合的查詢條件,不僅包括使用者查詢條件還包括其它的查詢條件(比如查詢使用者資訊的時候,將使用者購買商品資訊也作為查詢條件),這時可以使用包裝物件傳遞輸入引數。
包裝物件:pojo類中的乙個屬性是另外乙個pojo。
需求:根據使用者名稱模糊查詢使用者資訊,查詢條件放到queryvo的user屬性中。
編寫queryvo
public class queryvo
public void setuser(user user)
}
sql語句
select * from user where username like '%張%'
測試方法
在usermapeprtest
增加測試方法,如下:
@test
public void testqueryuserbyqueryvo()
// mybatis和spring整合,整合之後,交給spring管理
sqlsession.close();
}
resulttype(輸出型別)輸出簡單型別需求:查詢使用者表資料條數
測試方法
在usermapeprtest
增加測試方法,如下:
@test
public void testqueryusercount()
輸出pojo物件參考第一天內容
輸出pojo列表
參考第一天內容。
resultmap
resulttype可以指定將查詢結果對映為pojo,但需要pojo的屬性名和sql查詢的列名一致方可對映成功。
如果sql查詢欄位名和pojo的屬性名不一致,可以通過resultmap將欄位名和屬性名作乙個對應關係 ,resultmap實質上還需要將查詢結果對映到pojo物件中。
resultmap可以實現將查詢結果對映為複雜型別的pojo,比如在查詢結果對映物件中包括pojo和list實現一對一查詢和一對多查詢。
需求:查詢訂單表order的所有資料
sql:select id, user_id, number, createtime, note from `order`
宣告pojo物件
資料庫表如下圖:
order物件:
public class order
<?xml version="1.0" encoding="utf-8" ?>
select id, user_id,
number,
createtime, note from `order`
編寫介面如下:
/*** 查詢所有訂單
* * @return
*/listqueryorderall();}
測試方法
private sqlsessionfactory sqlsessionfactory;
@before
public void init() throws exception
@test
public void testqueryall() }}
發現userid為null
解決方案:使用resultmap
mybatis高階 輸入對映和輸出對映
首先是輸入型別,輸入型別分為以下幾種 1.基本型別。2.pojo物件型別。3.pojo包裝物件。所謂的包裝物件,可以理解為,乙個物件裡面包含著另外乙個物件。簡單輸入型別,比較簡單。在傳入引數的時候,直接將引數型別配置到parametertype中,如下 select from user where ...
Mybatis輸入輸出對映
1 傳遞簡單型別 select id finduserbyid parametertype int resulttype com.test.pojo.user select from user where id select 2 傳遞pojo物件 mybatis使用ognl表示式解析物件欄位的值。s...
MyBatis 輸出對映
使用resulttype進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功 如果查詢出來的列名和pojo中的屬性全部不一致,沒有建立pojo物件 如果查詢出來的列名和pojo中的屬性有乙個一致,則建立pojo物件 1.1.1 需求 使用者資訊的綜合資訊查詢列表總數。1.1....