Mybatis學習系列三 輸入引數和輸出引數

2021-10-03 16:30:23 字數 1555 閱讀 9568

輸入引數 : paramtertype

1. 型別為簡單型別(8個基本型別 + string)

a.  # $ , 其中的識別符號只能是value

b. #{}自動給string型別加上'' (自動型別轉換) ;${} 原樣輸出 但是適合於 動態排序 (動態字段)

select * from student where name = #

select * from student where name = '$'

select * from student order by $ asc

c.  #{} 可以防止sql注入

${}  不防止

#{},${} 相同之處:

都可以 獲取物件的值 (巢狀型別物件)

2.型別為物件型別#$

輸入物件為hashmap:

例子:

select * from student where id = # or age = #

hashmapmap = new hashmap();

map.put("age", 18);

map.put("id", "1");

輸出引數resulttype

輸出引數型別resulttype

1. 簡單型別(8個基本+string)

2. 輸出引數為實體物件型別

3. 輸出引數為實體物件型別的集合:雖然輸出型別為集合 但是resulttype依然寫 集合的元素型別(resulttype = 「student」)

4. 輸出引數型別為hashmap

--hashmap本身是乙個集合 可以存放多個元素 

但是根據提示發現 返回值為hashmap時  查詢的結果只能是1個學生(id,name)

-->結論:乙個hashmap 對應乙個學生的多個元素(多個屬性) 【乙個map存乙個學生】,所以得是集合

輸出引數型別為hashmap 例子

select * from student

//輸出型別是hashmap的查詢

public static void outhashmap() throws ioexception

輸出引數型別是resultmap的例子

實體類的屬性、資料表的字段:型別不同時、名字不同時

這個列子只是名字不同時 

select * from student where id = #

注意:當屬性名 和欄位名 不一致時  除了使用resultmap以外 也可以使用resulttype 和 hashmap

例子:

select id "sid" ,name "sname" , age "sage" , grade "sgrade" from student where id= #

Mybatis學習系列 延遲載入

舉個例子 如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。所以延遲載入即先從單錶查詢 需要時再從關聯表去關聯查詢,大大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。我們來對比一下 關聯查...

mybatis學習筆記三之mybatis外掛程式

一 外掛程式介紹 一般情況下,開源框架都會提供外掛程式或其他形式的擴充套件點,供開發者自行擴充套件。一是增加了框架的靈活性 二是開發者可以結合實際需求,對框架進行擴充套件。以mybatis為例,我們可基於mybatis外掛程式機制實現分頁 分表 監控等功能,在無形中增強功能。二 mybatis外掛程...

MyBatis學習總結(三)

一 連線資料庫的配置單獨放在乙個properties檔案中 1 在src目錄下新建乙個db.properties檔案,在db.properties檔案編寫連線資料庫需要使用到的資料庫驅動,連線url位址,使用者名稱,密碼 driver com mysql jdbc driver url jdbc m...