国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MyBatis學習筆記(五)輸入(parameterType)與輸出(resultType、resultMap)映射

2019-11-10 17:18:23
字體:
來源:轉載
供稿:網友

轉載自:輸入(parameterType)與輸出(resultType、resultMap)映射


在MyBatis中,我們通過parameterType完成輸入映射(指將值映射到sql語句的占位符中,值的類型與dao層響應方法的參數類型一致),通過resultType完成輸出映射(從數據庫中輸出,通過dao層的方法查詢到的數據輸出到pojo對象中)。 注意輸入與輸出都是相對于數據庫的。接下來我們先談談輸入映射。工程目錄結構如下: 這里寫圖片描述


1.輸入映射parameterType

通過parameterType傳入簡單類型或對象,我們之前講過了,接下來我們要講的是parameterType傳遞pojo包裝對象。可以定義pojo包裝類型擴展mapper接口輸入參數的內容。

看下我們的需求:定義查詢條件查詢用戶信息,需要向statement輸入查詢條件,查詢條件可以有user信息、商品信息等等。

首先我們在domain包下創建UserCustom類并繼承User, 這里寫圖片描述 UserCustom類用于對User屬性進行擴展(例如User中只有用戶信息,而我們可以在UserCustom中加入商品信息),然后再創建User的包裝類UserQueryVo.java: 這里寫圖片描述 UserMapper.xml中添加如下配置信息: 這里寫圖片描述 UserMapper.java中添加方法: 這里寫圖片描述 然后便可以進行測試: 這里寫圖片描述 可能出現的異常:如果在parameterType中指定了錯誤的屬性名時會出現如下異常:

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for PRoperty named 'userCusto' in 'class cn.itcast.mybatis.po.UserQueryVo'### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userCusto' in 'class cn.itcast.mybatis.po.UserQueryVo'

2.輸出映射

輸出映射有resultType和resultMap,他們都是指定輸出結果的類型(pojo、簡單類型、hashmap…),并將sql查詢結果映射為java對象 。

2.1resultType

借用上述parameter傳遞包裝pojo對象的知識(不用parameter傳遞包裝pojo對象的知識也行),我們來談談用resultType輸出簡單類型。UserMapper.xml文件中添加如下配置: 這里寫圖片描述 然后在UserMapper.java中添加如下方法: 這里寫圖片描述 測試: 這里寫圖片描述 這里因為查詢的記錄結果集為一條記錄且該記錄只有1列,所以我們使用的是返回簡單類型。

使用resultType時我們應該注意:sql查詢的列名要和resultType指定pojo的屬性名相同,指定相同屬性方可映射成功,如果sql查詢的列名要和resultType指定pojo的屬性名全部不相同(或是部分不相同),則映射到pojo對象中的對應屬性為null。例如有時候我們不需要查詢select * from user where id = ?而是select username,address _address where id = ? 此時我們給查詢的address列名給了一個別名_address,這樣我們通過查詢表中address的數據然后在將它映射到User對象時,該對象的address屬性就為null,即沒將從表中查詢到的address數據映射到user對象的address屬性中。

此時resultMap就出現了。如果sql查詢列名和最終要映射的pojo的屬性名不一致,使用resultMap就可以將列名和pojo的屬性名做一個對應關系 (列名和屬性名映射配置)。

2.2resultMap

使用resultMap需要在UserMapper.xml中進行配置: 這里寫圖片描述 然后在UserMapper.xml中使用它: 這里寫圖片描述 UserMapper.java文件中: 這里寫圖片描述 測試類代碼: 這里寫圖片描述 運行測試類發現,即使我們查詢的列名與User對象的屬性不一樣,但是我們的確映射成功了。


上一篇:C# 哈希表

下一篇:smarty 詳細使用教程

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会宁县| 商南县| 尚志市| 黔东| 定结县| 湘阴县| 东港市| 红原县| 永靖县| 平利县| 自治县| 广宁县| 镇坪县| 阳江市| 宜章县| 秦安县| 乌兰浩特市| 郑州市| 星子县| 新平| 洛宁县| 横山县| 常山县| 沙湾县| 武鸣县| 益阳市| 开封市| 蚌埠市| 丹巴县| 黎平县| 陇西县| 金塔县| 大足县| 青神县| 响水县| 宕昌县| 浪卡子县| 宜昌市| 武定县| 滦南县| 金华市|