mybatis ResultMap
生活随笔
收集整理的這篇文章主要介紹了
mybatis ResultMap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ResultMap
- 解決屬性名和字段的名稱不一致的問題.
- 查詢為null的問題
創建java實體類:
public class User {private int id; //idprivate String name; //姓名private String password; //密碼和數據庫不一樣!//構造//set/get//toString()
}
接口:
//根據id查詢用戶
User selectUserById(int id);
mapper映射文件:
<select id="selectUserById" resultType="user">select * from user where id = #{id}
</select>
測試
@Test
public void testSelectUserById() {SqlSession session = MybatisUtils.getSession(); //獲取SqlSession連接UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.selectUserById(1);System.out.println(user);session.close();
}
因為實體類的屬性名字和數據庫中的字段名字不一致導致搜出來的結果為null.
分析:
mybatis會根據這些查詢的列名(會將列名轉化為小寫,數據庫不區分大小寫) , 去對應的實體類中查找相應列名的set方法設值 , 由于找不到setXxxx, 所以找不到的值返回null ;
解決方案:
方案一:
為列名指定別名,別名和java實體類的屬性名一致.
<select id="selectUserById" resultType="User">select id , name , pwd as password from user where id = #{id}
</select>
使用結果集映射:
ResultMap推薦
<resultMap id="UserMap" type="User"><!-- id為主鍵 --><id column="id" property="id"/><!-- column是數據庫表的列名 , property是對應實體類的屬性名 --><result column="name" property="name"/><result column="pwd" property="password"/>
</resultMap>
<select id="selectUserById" resultMap="UserMap">select id , name , pwd from user where id = #{id}
</select>
自動映射:
ResultMap元素是mybatis最最重要最強大的元素之一.- 在為一些連接的復雜的語句編寫映射代碼的時候,一份
resultmap能夠代替實現同等功能的長達數千行的代碼.
<select id="selectUserById" resultType="map">select id , name , pwd from user where id = #{id}
</select>
總結
以上是生活随笔為你收集整理的mybatis ResultMap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis配置文件解析
- 下一篇: mybatis使用注解开发