場景:查詢寵物資訊,關聯查詢類別資訊
通過外來鍵去查詢另乙個表
資料庫:
pets表: id,name,birth_date,type_id
types表:id,name
實體類:
pets
private int id;
private string name;
private date birthdate;
private int typeid;
types
private int id;
private string name;
這時我們想同時查詢兩個表的內容,應該怎麼辦,在不修改實體類欄位的基礎上?
這時我們就可以寫乙個擴充套件類繼承pets類,包含額外的字段
pet***t:
private int tid; //為了區分起個別名
private string tname;
public listfindallpetsandtypes();
}
<?xml version="1.0" encoding="utf-8"?>
select p.*,t.id tid,t.name tname
from pets p,types t
where p.type_id=t.id
使用resulttype有兩種解決方案:
①:實體類的字段和資料庫一致
②:起別名 和實體類的字段一致
下面說一下第二種:
select p.* ,t.id tid,t.name tname
from pets p,types t
where p.type_id = t.id
使用resulttype來進行一對一結果對映,查詢出的列的個數和對映的屬性的個數要一致。而且對映的屬性要存在乙個大的物件中(擴充套件),它是一種平鋪式的對映,即資料庫查詢出多少條記錄,則對映成多少個物件。
查詢寵物資訊,關聯查詢類別資訊。
乙個寵物對應乙個類別
select p.id,p.name,p.birth_date birthdate, p.type_id typeid,t.id tid,t.name tname
from pets p,types t
where p.type_id=t.id
查詢類別資訊,關聯查詢寵物資訊
乙個型別—>多隻寵物
select t.*,p.id pid,p.name pname,p.birth_date birthdate
from types t
left join pets p
on t.id=p.type_id
oftype:封裝的集合的型別
延遲載入又叫懶載入,也叫按需載入。也就是說先載入主資訊,在需要的時候,再去載入從資訊。
在mybatis中,resultmap標籤的
association標籤(配置單個物件)
collection標籤(配置集合)具有延遲載入的功能。
比如:
select * from pets
property:指定屬性
select :指定乙個查詢語句該查詢語句最終能夠返回使用property指定的物件
for (pets pets : list)
但是我們來看列印的sql語句,不難發現把型別也查詢了出來,我們把這種叫做立即載入
==> preparing: select * from pets
==> parameters:
<== columns: id, name, birth_date, type_id, owner_id
<== row: 100, 花花, 2018-09-07, 3001, 10
====> preparing: select * from types where id=?
====> parameters: 3001(integer)
<==== columns: id, name
<==== row: 3001, 貓科
<==== total: 1
<== row: 105, 紅花崗, 2012-03-04, 3002, 10
那麼如何設定延遲載入呢?
mybatisconfig.xml中配置settings標籤
這時我們再來看一下列印的sql語句:
==> preparing: select * from pets
==> parameters:
<== columns: id, name, birth_date, type_id, owner_id
現在就會發現這次沒有查詢型別了
Mybatis 高階對映
一對一對映 association 標籤的巢狀查詢 select id,username,useremail,user role.role id from user inner join user role on user role.role id user.id where user.id sel...
Linux記憶體管理之高階記憶體對映
分析完linux記憶體管理的基本概念與實現之後,就可以接著分析使用者空間與核心空間的互動操作了。brk系統呼叫屬於那種常用但是 可見度 不高的操作,常用於使用者空間堆的管理 請參閱本站的 中的malloc機制分析 一文 brk在使用者空間的介面為int brk void end data segme...
mybatis高階 輸入對映和輸出對映
首先是輸入型別,輸入型別分為以下幾種 1.基本型別。2.pojo物件型別。3.pojo包裝物件。所謂的包裝物件,可以理解為,乙個物件裡面包含著另外乙個物件。簡單輸入型別,比較簡單。在傳入引數的時候,直接將引數型別配置到parametertype中,如下 select from user where ...