MyBatis傳入參數與ParameterType總結(二)

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中使用別名,不過我本人不喜歡,因爲懶嘍,嘿嘿。

    



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章