mybatis的insert、update、delete、select中都提到了parameterType這個元素。
那麼,這麼愛上鏡的它究竟怎麼使用呢?聽我嘮嘮。
一、接口中的參數類型
我暫且分爲三類:基本數據類型、POJO類、HashMap類
你也可以把POJO類和HashMap歸爲複雜數據類型,均可。
二、接收參數的方式
a、#{參數} 預編譯類型
b、${} 非預編譯(直接引用sql拼接,但是不能防止sql注入)
基本數據類型只能傳入一個參數,一般使用 #{參數}獲取,複雜數據類型用 #{屬性名},map中則用#{key}獲取;
${} 去接收參數,在一個參數情況時,默認必須使用${value}獲取參數值
比如:UserDaoImpl.xml
<update id="updateUser" parameterType="cn.zgg.mybatis.pojo.User">
UPDATE tb_user
SET
user_name=#{userName},
password=#{password},
name=#{name},
age=#{age},
sex=#{sex},
birthday=#{birthday},
updated=NOW()
WHERE
(id=#{id});
</update>
java類:
/*
* 修改用戶
*/
public void updateUser(User user);
測試類:
@Test
public void testUpdateUser() {
User user = this.userDao.queryUserById(1l);
user.setAge(12);
user.setName("wyll");
this.userDao.updateUser(user);
}
總結:接口名與id值一致,參數類型是自定義包裝POJO類,這裏寫的是User類的全路徑。
三、註解
1)、 mapper接口一般只接收一個參數,不過呢,你也可以通過使用@Param註解將多個參數綁定起來,作爲一個map輸入參數;
2)、mapper藉口如何傳遞多個參數呢?
有兩種方式:
a 、默認規則獲取參數:{0,1,param1,param2}
b、使用@Param註解指定參數名(最佳方案)
這時,映射文件就可以通過${}或者#{}對應參數名獲取參數
四、返回值類型
注意了注意了!!!
ResultMap 是MyBatis中最重要最強大的元素
爲什麼這麼吹?
因爲,它解決了兩大問題:POJO屬性名和表結構字段名不一致的問題;
完成高級查詢:比如說:一對一、一對多、多對多。
當然了,駝峯命名法也是可以解決屬性和表結構不對應的問題的,只要在mabatis配置文件加入
<setting name="mapUnderscoreToCamelCase" value="true"/>解決;
還有sql中使用別名,不過我本人不喜歡,因爲懶嘍,嘿嘿。