查詢條件:根據玩家名,查詢遊戲資訊
/**
* 根據玩家名查詢遊戲
* @param name 玩家名
* @return 玩家實體類
*/public playerentity selectplayerbyname(string name);
接下來,我分別演示關聯查詢和子查詢方式實現介面方法的對映。
關聯查詢方式
現在我們暫時先拋開 mybatis 框架,直接從資料庫出發寫一寫關聯查詢的 sql 語句,如下:
select p.*,g.* from tb_player as p join tb_player_game as p_g on p.id = p_g.player_id join tb_game as g on g.id = p_g.game_id where p.name = '張三'
這條 sql 語句有點長,涉及三表關聯查詢,因為多對多相比一對多而言,多了一張中間表哈。
我們在資料庫中執行這條 sql 語句,結果如下:
現在,我們回到 mybatis 框架,看一下在 xml 對映檔案中,如何實現關聯查詢對映。
首先,我們需要建立 playerentity 實體類 與 gameentity 實體類之間的關聯關係,如下:
public class playerentity
這樣,通過玩家名查詢的遊戲資訊就可以對映到 games 屬性中。對了,set 和 get 方法以及 tostring 方法自己補上哈。
現在,我們來編寫對映檔案中 sql 語句對映,如下:
<?xml version="1.0" encoding="utf-8"?>
select p.*,g.* from tb_player as p
join tb_player_game as p_g on p.id = p_g.player_id
join tb_game as g on g.id = p_g.game_id where p.name = #
除了三表關聯查詢,其他和一對多關聯對映差不多。
最後,我們在 mybatistest 中新增乙個單元測試方法,如下:
@test
public void selectplayerbynametest()
執行測試,結果如下:
可以思考一下,如果這裡需要列印賬號資訊,你可以嘗試一下能否自己獨立搞定。
mybatis 多對多查詢
查詢使用者及使用者購買商品資訊。查詢主表是 使用者表 user 關聯表 由於使用者和商品沒有直接關聯,通過訂單和訂單明細進行關聯,所以關聯表是 orders orderdetail items select orders.order表的唯一標識 user表的唯一標識 user.username,us...
mybatis高階查詢 一對一 多對一
mybatis使用標籤 一的一方配置標籤 對應返回值單個實體 多的一方配置 標籤 對應返回值集合 根據實體類的定義,如果是屬性集合就配置,如果返回的資料是乙個實體的就配置 多表查詢時,需要乙個實體類多個表的資料.那麼需要將表與表的關係,也要反應在實體類與實體類之間的關係.配置一條資料的一方,使用實體...
mybatis 一對多查詢
查詢訂單及訂單明細的資訊。這裡怎麼體現了一對多 這裡orders的id出現重複的記錄,無法對映到orders類中 collection 對關聯查詢到多條記錄對映到集合物件中 4 查詢訂單 關聯使用者 及訂單明細 public listfindordersandorderdetailresultmap...