mybatis 輸入對映和輸出對映

2021-09-24 22:02:03 字數 2784 閱讀 1547

輸入對映和輸出對映

複製昨天的工程,按照下圖進行

最終效果如下圖:

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....